0

ねえ、この例のようなポップアップ ダイアログの実装に問題があります: http://malsandroid.blogspot.com/2010/04/list-picker-and-fading-popup-notice.html

エディットボックスのコードを実装すると、問題なく動作します。問題は、アプリでオプションメニューを使用して、ユーザーがアンドロイドの標準キーボードを使用するか、このポップアップダイアログを編集ボックスへの入力として使用するかを制御できるようにすることです。

このコードを 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!

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 に答える