AndroidでAlertDialogの値を返す/保存しますか?

だから、私はAndroidのアクティビティでAlertDialogのコードを取得していますが、正しい瞬間に動作してポップアップしますが、「OK」ボタンを押すと、2つの変数を保存することになっていますアクティビティの後でこれらの文字列を使用できる文字列。

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"をアクティビティの開始のどこかに宣言しているのであれば、私はそれらを正しく宣言しています。今私が疑問に思っていることは、残りのアクティビティでそれらの値を使用できるようにこれらの値を返すことができないのはなぜですか?私は何度も試してみましたが、Dialogは値を返す/保存しません...何が間違っていますか?

0
私はあなたがしようとしていることを知っていると思います。あなたは showDialog を呼び出した直後にこれらの変数を使用しようとしていますか?変数がOKボタンが押された後にだけ値で満たされていることを確認してください。これがこれを解決することを願っています。
追加された 著者 st0le,
ああ、Sidenote、 showDialog(int)は内部のActivity関数です。後で混乱します。名前を変更する必要があります。
追加された 著者 st0le,
あなたはすべてのことを正しくやっています。技術的にはあなたのコードはうまくいくはずです。どのように/いつそれらの変数にアクセスしているのか、それらを正確に定義した場所を教えてください。そして、@Draxは言ったように、onClickListenerの値をログに記録して、少なくともatleastの値を取得していることを確認してください。
追加された 著者 Arnab Chakraborty,
このコード部分をデバッグしましたか?はいの場合は、onClickの後に値を出力します。私はOnClickにのみ問題があると仮定しています
追加された 著者 Dinesh Prajapati,
LOL私はそんなにばかげたことですが、別のメソッドから2つの変数を呼び出すと、episodeStringとpageStringを二重引用符で囲みました...(例えば)20 + 50と言うのではなく、episodeString + pageString
追加された 著者 ZimZim,

1 答え

あなたは絶対に動作します

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();


    }


}
0
追加された