0

現在、サブメニューを追加して、やりたいことを実行しようとしています。私はオンラインで見てきましたが、それが可能かどうかはわかりません。

基本的には、ユーザーが「サインイン」というボタンを押して、ユーザー名というラベルと、ユーザーが希望のユーザー名を入力できる編集可能なテキストボックスを持つサブメニューを表示します。

これは可能ですか?

私が現在持っているコードは

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    TextView txtUsername = (TextView) findViewById(R.id.txtUsername);
    EditText edit_username = (EditText) findViewById(R.id.edit_username);
    super.onCreateOptionsMenu(menu);
    SubMenu sub = menu.addSubMenu(0,1,0, "Sign-In");
    sub.add(0,11,0,edit_username);    //I have noticed this is wrong but the only way I thought it would work
    sub.add(0,12,0,txtUsername);    //same for here

    //add button for okaying the username

    return true;
}

明らかにこれは作成オプションメニューにありますが、私が言ったように、ユーザーがsignIn voidを使用してサインインをクリックしたときにメニューをロードしたいと思います

public void signIn(View view) 
{
 //load menu here
}
4

1 に答える 1

1

メニュー項目には任意の数のサブメニューを追加できますが、サブメニューをネストすることはできません。(参考

サブメニュー付きのメニューは、メニュー項目に関連するサブメニュー項目が多数あるまれなケースで使用されます。

の子として要素を追加することにより、任意のメニュー(サブメニューを除く)の項目にサブメニューを追加できます。サブメニューは、PCアプリケーションのメニューバーの項目(ファイル、編集、表示など)のように、アプリケーションにトピックに整理できる多くの機能がある場合に役立ちます。

オプションメニューの詳細については、このドキュメントを参照してください。

オプションメニューにユーザー名とパスワードのフィールドを追加しても意味がありません。サブアクティビティまたはダイアログフラグメントを使用して、これらのフィールドを表示できます。

コードには、2つの問題があります。

SubMenu sub = menu.addSubMenu(0,1,0、 "サインイン"); sub.add(0,11,0、edit_username);
sub.add(0,12,0、txtUsername);

  1. サブメニューをネストすることはできません。
  2. add (int groupId, int itemId, int order, CharSequence title)明らかに、Viewウィジェット(edittextとtextview)ではなく、パラメーターとしてCharSequenceを取ります。
于 2013-01-22T09:46:59.453 に答える