私はさまざまなオプションのリストを含むコンテキストメニューを開くボタンを持っています。一度に選択できるオプションは1つだけなので、それぞれの項目の横にラジオボタンを表示して、現在選択されている項目を強調表示します。コンテキストメニューから項目を選択すると、ラジオボタンが選択されて閉じます。コンテキストメニューを開くためにボタンをクリックすると、前に選択した項目は選択されません。Androidチェック可能なコンテキストメニューがチェックされていないことを確認しました
どのアイテムを以前に選択したかを覚えておくにはどうすればよいですか?
第2に、アクティビティが最初に作成されるとき、デフォルトオプションが選択されます。別のコンテキストメニュー項目が選択されたときに上書きできるようにするにはどうすればよいですか?私はandroid:checked="true"
をXMLに設定できますが、別の項目を選択すると上書きできますか?
のJava:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browse);
Button buttonView = (Button) this.findViewById(R.id.button_view);
buttonView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
registerForContextMenu(v);
openContextMenu(v);
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle(R.string.menu_title);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case(R.id.item1):
if(item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
break;
case(R.id.item2):
if(item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
break;
case(R.id.item3):
if(item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
break;
default:
return super.onContextItemSelected(item);
}
return true;
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/context_menu" android:checkableBehavior="single">
<item android:id="@+id/item1"
android:title="@string/context_menu_item1" />
<item android:id="@+id/item2"
android:title="@string/context_menu_item2" />
<item android:id="@+id/item3"
android:title="@string/context_menu_item3" />
</group>
</menu>
どのような援助をいただければ幸いです!
私は選択されているので、ユーザーの入力を格納します。次回コンテキストメニューを開いたときに、これを使ってアイテムを選択したものとして表示するにはどうすればよいですか? – tavocado
私は答えを更新しました。したがって、onCreateContextMenuを使用して、ここでchecked状態を設定する必要があります。 – asktomsk
これは今うまくいっています!ご協力いただきありがとうございます :) – tavocado