2014-09-25 89 views
-1

以示例代碼顯示alertdialog。我想把用戶的選擇放到button1上。我不明白如何傳遞變量「ARG1」主代碼:保留從alertdialog到主代碼的變量

public class MainActivity extends ActionBarActivity { 
    private Button button1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button1 = (Button)findViewById(R.id.button1); 
     button1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 

      alertSingleChoiceItems(); 

       } 
      }); 
     // I need put here my variable: 
     button1.setText(""+???); 
    } 

public void alertSingleChoiceItems(){ 

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
builder.setTitle("Choose One") 

    .setSingleChoiceItems(R.array.choices, 0, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 

     } 

    }) 
下面

的是,爲什麼用戶必須點擊確定設置可供選擇:

.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 

      int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); 
      showToast("selectedPosition: " + selectedPosition); 
     } 
    }) 

    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 

     } 
    }) 
    .show(); 
} 

回答

0

在主類只需創建一個公共的(不靜所必要的)變量是這樣的:

public class MainActivity extends ActionBarActivity { 
     private Button button1; 

     public int arg; 

則:

public void onClick(DialogInterface arg0, int arg1) { 
    arg = arg1; 
    } 
0

你可以簡單地設置點擊對話框中的按鈕。

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
builder.setTitle("Choose One"); 
builder.setSingleChoiceItems(R.array.choices, 0, new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface arg0, int arg1) { 
     button1.setText(""+arg1); 
    } 
}); 
builder.create().show(); 

你不能將它設置爲你的建議,因爲代碼設置按鈕上的文字將alertSingleChoiceItems之前已經運行();叫做。

+0

謝謝!但我需要在主代碼中使用該變量:-) – watchmansky 2014-09-25 14:36:16

0

你可以把一個全局靜態變量整數和ARG1分配給它的按鈕,點擊裏面......像

private static int x = 0; 

.setSingleChoiceItems(R.array.choices, 0, new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface arg0, int arg1) { 
     x = arg1; 
    } 

}) 

編輯:

如果您想直接設置按鈕的文本,然後克諾索斯的回答大多是比我的答案有幫助..

+0

Ranjit Pati:作品!非常感謝;-) – watchmansky 2014-09-25 14:35:51

+0

該變量不需要是靜態的。作爲附錄。 – Knossos 2014-09-25 14:37:31

+0

@Knossos是的..你是對的..但靜態可能比簡單的變量更友好。謝謝你的建議:) – Ranjit 2014-09-25 14:41:31