2011-11-25 3 views
0

그래서 안드로이드 활동에서 AlertDialog에 대한 코드를 얻었습니다. 올바른 순간에 제대로 작동하지만 "OK"버튼을 누르면 입력 한 2 개의 변수를 저장해야합니다. 활동 후에 해당 문자열을 사용할 수 있어야하는 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에 값을 기록하려고 시도해보십시오. 적어도 atleast 값을 얻고 있는지 확인하십시오. –

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


    } 


} 
관련 문제