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

此方法循环应用程序中的所有编辑文本并尝试将弹出对话框设置为输入,但它无法按上述方式工作。真的需要建议,提前谢谢!

4

1 回答 1

0

而不是getApplicationContext(),尝试将活动本身存储为静态变量并将其用于上下文。

在你的课堂上:

private static Activity activity;

在某处onCreate()

activity = this;

然后做:

AlertDialog.Builder builder = new AlertDialog.Builder(activity);
于 2011-03-15T17:24:34.437 回答