2011-11-25 119 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(); 


    } 


}