嘿,我在这个例子中实现像这样的弹出对话框有问题: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();
}
};
此方法循环应用程序中的所有编辑文本,并尝试将弹出对话框设置为输入,但它不能如上所述工作。真的需要提前建议!
答案 0 :(得分:0)
而不是getApplicationContext()
,尝试将活动本身存储为静态变量并将其用于上下文。
在你班上:
private static Activity activity;
onCreate()
中的某处:
activity = this;
然后做:
AlertDialog.Builder builder = new AlertDialog.Builder(activity);