Как начать деятельность только после того, как пользователь нажимает ОК на AlertDialog - PullRequest
1 голос
/ 11 октября 2011

У меня есть AlertDialog, и я хочу, чтобы следующее действие началось только после того, как я нажал «ОК».Проблема в моем методе, у меня есть локальные переменные, связанные с моим намерением, и я не могу вставить метод onCreateDialog.

//local variable created
ArrayList<String> students = new ArrayList<String>();    
for(int i=0; i<studentList.size(); i++){
    students.add(studentList.get(i).getName());
}

AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                     new ContextThemeWrapper(this, R.style.popup_theme));
alertDialog.setTitle("Select Game");           
alertDialog.setPositiveButton("3x3", new DialogInterface.OnClickListener() {  
public void onClick(DialogInterface dialog, int which) { 

    //I want the new Activity to start only after user clicks ok.
    Intent intent=new Intent(getApplicationContext(),NewActivity.class);
    //Local variable, undefined, cannot reference 
    intent.putStringArrayListExtra("students", students);
    startActivity(intent);
    finish();
    return;  
    }        
}); 
alertDialog.show();

Есть ли способ предотвратить запуск кода после showDialog() допользователь нажимает ОК?У меня есть локальная переменная, которую нужно поместить в намерение.

Ответы [ 3 ]

6 голосов
/ 11 октября 2011

используйте этот код

AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                         new ContextThemeWrapper(this, R.style.popup_theme));
    alertDialog.setTitle("Select Game");         
    alertDialog.setMessage("[ Choose Puzzle Matrix ]");      
    alertDialog.setPositiveButton("3x3", new DialogInterface.OnClickListener() {  
    public void onClick(DialogInterface dialog, int which) { 
        Intent myIntent = new Intent(((Dialog) dialog).getContext(), Matrix3x3.class);
        startActivity(myIntent);    
        return;  
        }        
    });      
    alertDialog.show();
1 голос
/ 18 октября 2011

Марка students переменная final.

final ArrayList<String> students = new ArrayList<String>();
0 голосов
/ 16 октября 2011

Не уверен, что это правильный путь, но я сделал хак, сделав students глобальной переменной.Хотелось бы получить лучшие ответы.

...