2011-03-15 73 views
0

嘿,我有實現一個彈出式對話框像這樣一個在這個例子中的一個問題:http://malsandroid.blogspot.com/2010/04/list-picker-and-fading-popup-notice.html彈出的對話框中輸入

它,如果我實現了編輯框代碼的工作就好了。問題是,我想在應用中使用選項菜單,讓用戶可以控制他是否想要使用android中的標準鍵盤或此彈出對話框作爲編輯框的輸入。

如果我直接把這個代碼放到main.java類正常工作,因爲我剛纔說的(相同的代碼上面的例子):

hcp_entry_player_1 = (EditText)findViewById(R.id.hcp_entry_player_1); 

final CharSequence[] items = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}; 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Pick a hcp"); 
builder.setItems(items, new DialogInterface.OnClickListener() 
{ 
    public void onClick(DialogInterface dialogInterface, int item) 
    { 
     hcp_entry_player_1.setText(items[item]); 
     Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 

     return; 
    } 
}); 

builder.create().show(); 

爲了使長話短說,當我使用的選項菜單我需要在不同的void方法之間使用onClickListener。因此,我不能撥打AlertDialog.Builder builder = new AlertDialog.Builder(this);。我試圖撥打AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());但它不工作。說實話,我真的不明白這個問題?

萬一有人有興趣,我將輸入更多的代碼:

public void setListInputMethod() 
{ 
    for(EditText et : mEditTextList) 
    { 
     et.setEnabled(false); 
     et.setOnClickListener(mTouchTextFieldListener); 
    } 
} 

private OnClickListener mTouchTextFieldListener = new OnClickListener() 
{ 
    EditText et; 
    public void onClick(View v) 
    { 
     et = (EditText)v; 

     final CharSequence[] items = {"1", "2", "3"}; 
     AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); 
     builder.setTitle("Pick a hcp"); 
     builder.setItems(items, new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialogInterface, int item) 
      { 
       et.setText(items[item]); 
       Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 

       return; 
      } 
     }); 
     builder.create().show(); 
    } 
}; 

這種方法循環的所有編輯文本的應用程序,並試圖設置彈出的對話框中輸入,但是如上所述它不工作。真的需要建議,thx提前!

回答

0

而不是getApplicationContext(),嘗試將活動本身存儲爲靜態變量並將其用於上下文。

在你的類:

private static Activity activity; 

某處onCreate()

activity = this; 

然後做:

AlertDialog.Builder builder = new AlertDialog.Builder(activity);