2011-11-25 81 views
0

因此,我已经在Android活动中获得了AlertDialog的代码,虽然它在正确的时刻运行并弹出,但当我按下“确定”按钮时,它应该保存我放入的两个变量,分成2个字符串,这些字符串在活动之后应该能够使用这些字符串。从Android中的AlertDialog返回/保存值?

private void showDialog(){ 
AlertDialog.Builder alertdg = new AlertDialog.Builder(this); 
alertdg.setTitle("Choose page"); 
alertdg.setMessage("Choose episode/page"); 

final EditText page = new EditText(this); 
final EditText episode = new EditText(this); 
page.setWidth(210); 
episode.setWidth(210); 

LinearLayout layout = new LinearLayout(this); 

layout.addView(episode); 
layout.addView(page); 
alertdg.setView(layout); 

alertdg.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     episodeString = episode.getText().toString(); 
     pageString = page.getText().toString(); 
    } 
}); 

alertdg.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 

    } 
}); 
alertdg.show(); 
} 

是的,如果你想知道我已经宣布了2串“episodeString”,并在活动开始的地方“pageString”,我知道我正确地宣布他们。现在我想知道的是,为什么我不能返回这些值,以便其余的活动可以使用它们?我已经尝试了很多次,但对话框不会返回/保存值...我做错了什么?

+0

你调试的代码的这一部分?如果是,你是否打印过onClick后的值。我假设在OnClick中存在问题 –

+0

嗯,你正在做的一切都是正确的。所以技术上你的代码应该可以工作。你能告诉我如何/何时访问这些变量,以及你在哪里定义了它们。 就像@Drax说的那样,尝试在onClickListener中记录值,确保你至少得到了值。 –

+0

我想我知道你在做什么,你是否试图在调用'showDialog'时尽快使用这些变量?看到,只有在按下OK按钮之后,变量才会被填入数值,直到它们变空为止。我希望这能解决这个问题。 – st0le

回答

0

你绝对代码工程

package pete.android.study; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.Toast; 

public class MainActivity extends Activity{ 

    private String mEpisode = ""; 
    private String mPage = ""; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     showDialog(); 

    } 

    private void showDialog(){ 
     AlertDialog.Builder alertdg = new AlertDialog.Builder(this); 
     alertdg.setTitle("Choose page"); 
     alertdg.setMessage("Choose episode/page"); 

     final EditText page = new EditText(this); 
     final EditText episode = new EditText(this); 
     page.setWidth(210); 
     episode.setWidth(210); 

     LinearLayout layout = new LinearLayout(this); 

     layout.addView(episode); 
     layout.addView(page); 
     alertdg.setView(layout); 

     alertdg.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       mEpisode = episode.getText().toString(); 
       mPage = page.getText().toString(); 

       Toast.makeText(MainActivity.this, mEpisode + " | " + mPage, Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     alertdg.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 

      } 
     }); 
     alertdg.show(); 


    } 


}