2

私は非常に初心者で、アプリのメニューにandroid development新しいMenuアイテムを追加して、タップしたときにメニュービュー レイアウトを開いて表示するのに問題があります。これまでのところ、アプリのmenu.xmlファイルを変更することしかできませんでした。これは、ボタンbuttonを押したときに表示される他のものと並んで配置される を作成するには十分ですMenuが、何かにリンクするには十分ではありません。

私の目標は、ボタンを押すと、単純な xml レイアウトまたはダイアログ ページに接続することです。Javaコードを変更する必要があると思いますが、これを行うために正確に何が必要かわかりません。提案をいただければ幸いです。

「アクティビティでメニューを使用するには、MenuInflater.inflate() を使用してメニュー リソースをインフレートする (XML リソースをプログラム可能なオブジェクトに変換する) 必要があります。次のセクションでは、各メニュータイプのメニュー。」私が知る必要があるのは、アイテムを他のアイテムのインフレータに追加する方法だと思います。

私が挿入できるもののバニラバージョンを持っている人はいますか?

ダイアログを開き、閉じるボタンと「変更」ボタンを処理する既存のコードの例を次に示します。

private void openHelpDialog() {
    LayoutInflater li = LayoutInflater.from(this);
    View view = li.inflate(R.layout.aboutview, null); 
    TextView tv = (TextView)view.findViewById(R.id.aboutVersionCode);
    tv.setText(getVersionName() + " (revision " + getVersionNumber() + ")");
    new AlertDialog.Builder(MainActivity.this)
    .setTitle(getResources().getString(R.string.application_name) + " " + getResources().getString(R.string.menu_help))
    .setIcon(R.drawable.about)
    .setView(view)
    .setNeutralButton(R.string.menu_changes, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
          MainActivity.this.openChangesDialog();
      }
    })
    .setNegativeButton(R.string.close, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
      }
    })
    .show();  
}

private void openChangesDialog() {
  LayoutInflater li = LayoutInflater.from(this);
  View view = li.inflate(R.layout.changeview, null); 
  new AlertDialog.Builder(MainActivity.this)
  .setTitle(R.string.changelog_title)
  .setIcon(R.drawable.about)
  .setView(view)
  .setNegativeButton(R.string.close, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        //
    }
  })
  .show();  
}

private void openClearDialog() {
    new AlertDialog.Builder(MainActivity.this)
    .setTitle(R.string.context_menu_clear_grid_confirmation_title)
    .setMessage(R.string.context_menu_clear_grid_confirmation_message)
    .setIcon(android.R.drawable.ic_dialog_alert)
    .setNegativeButton(R.string.context_menu_clear_grid_negative_button_label, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
          //
      }
    })
    .setPositiveButton(R.string.context_menu_clear_grid_positive_button_label, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            MainActivity.this.kenKenGrid.clearUserValues();
        }
    })
    .show();  
  }
4

2 に答える 2

0

このようなアクティビティにプログラムでサブメニューを追加できます。ここのチュートリアルから適応:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.optionsmenu, menu);

    SubMenu menu4 = menu.addSubMenu(Menu.NONE, MENU4, 4,"Menu No. 4");
    menu4.add(GROUP1, SUBMENU1, 1, "SubMenu No. 1");
    menu4.add(GROUP1, SUBMENU2, 2, "SubMenu No. 2");
    menu4.setGroupCheckable(GROUP1,true,true);

    return true;

}

xml では、次のように実行できます (ここから取得):

<item android:title="Normal 1" />

<item android:id="@+id/submenu"
    android:title="Emotions">

    <menu>        

        <item android:id="@+id/happy"
            android:title="Happy"
            android:icon="@drawable/stat_happy" />

        <item android:id="@+id/neutral"
            android:title="Neutral"
            android:icon="@drawable/stat_neutral" />

        <item android:id="@+id/sad"
            android:title="Sad"
            android:icon="@drawable/stat_sad" />

    </menu>

</item>

<item android:title="Normal 2" />

于 2012-10-19T01:49:01.373 に答える
0

すでに Eclipse にあるサンプル プロジェクトから多くの例を見つけることができます。これはあなたが求めているものですか?

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.option_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Intent serverIntent = null;
    switch (item.getItemId()) {
    case R.id.secure_connect_scan:
        // Launch the DeviceListActivity to see devices and do scan
        serverIntent = new Intent(this, DeviceListActivity.class);
        startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_SECURE);
        return true;
    case R.id.insecure_connect_scan:
        // Launch the DeviceListActivity to see devices and do scan
        serverIntent = new Intent(this, DeviceListActivity.class);
        startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_INSECURE);
        return true;
    case R.id.discoverable:
        // Ensure this device is discoverable by others
        ensureDiscoverable();
        return true;
    }
    return false;
}

実際、このコードは BluetoothChat の例から取られたものです。これが役立つことを願っています。

于 2012-10-19T01:09:43.000 に答える