1
これをコード化してOptionsMenuのFilterアイコンを取得しました。私は描画可能なイメージを持つ空のMenyを使用していました。そのonClickはDialogFragmentを表示していました。しかし、これは正常に動作しません空のタイトル項目は、私のDialogFragmentを開くOptionsMenuクリックに表示されます。 私は助けていただきありがとうございます。おかげさまで OptionsMenuためアンドロイドのOptionsMenuのデフォルトアイコンを変更するにはどうすればいいですか?
メニューファイル:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/filter"
android:orderInCategory="100"
android:icon="@drawable/filter_icon"
android:showAsAction="ifRoom|withText"
android:title="hi" />
</menu>
これはmyactivityです:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
String[] values = new String[]{ "Veg.",
"Non Veg.",
"Veg & Non veg."
};
int id = item.getItemId();
if (id == R.id.filter) {
RestaurantListingFragment restaurant_categories_dialog = new RestaurantListingFragment();
android.app.FragmentManager fm = getFragmentManager();
Bundle args = new Bundle();
args.putStringArray("restaurantCategories",values);
restaurant_categories_dialog.setArguments(args);
// Show DialogFragment
restaurant_categories_dialog.show(fm, "hi");
return true;
}
return super.onOptionsItemSelected(item);
}
これは私のフラグメントのクラスです:
public class RestaurantListingFragment extends DialogFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_dialog_restaurant_categories, container,false);
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
String[] restaurantCategories = getArguments().getStringArray("restaurantCategories");
if(restaurantCategories != null)
{
ListView lv=(ListView) rootView.findViewById(R.id.fd_lv);
ArrayAdapter arrayAdapter =new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1,android.R.id.text1,restaurantCategories);
lv.setAdapter(arrayAdapter);
}
return rootView;
}
}
のマニフェスト:あなたのメニューファイルの変更で
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cresol.demo.drestodemo">
<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true">
<activity
android:name=".Home"
android:theme="@style/NoTitle">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".signup"
android:theme="@style/NoTitle" />
<activity
android:name=".RestaurantListing"
android:theme="@style/AppTheme" />
<activity android:name=".DishListing"
android:theme="@style/AppTheme"></activity>
</application>
</manifest>
と多分これは役立ちます。あなたのメニューファイルの変更では、このライン 'アンドロイド:showAsAction = |この1 'アプリで「ifRoom withText」 ' :showAsActionは=「常に」' –
は私だけ...という試みたが、それは働いていません。私はあなたの助けに感謝します。 –
あなたは 'app:showAsAction =" always "を使用していますが、' android:showAsAction = "always"ではないことを確信していますか –