Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中更改选项菜单的默认图标?_Android_Xml_Android Fragments_Android Dialogfragment_Android Optionsmenu - Fatal编程技术网

如何在android中更改选项菜单的默认图标?

如何在android中更改选项菜单的默认图标?,android,xml,android-fragments,android-dialogfragment,android-optionsmenu,Android,Xml,Android Fragments,Android Dialogfragment,Android Optionsmenu,我对其进行编码是为了在Options Menu(选项菜单)上获得一个过滤器图标。我使用了一个带有可绘制图像的空菜单,单击该菜单会显示一个DialogFragment(对话框片段)。但这并不好用,因为选项菜单上会显示一个空标题项,单击打开的对话框片段。 谢谢你的帮助。 谢谢 选项的菜单文件菜单: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/re

我对其进行编码是为了在Options Menu(选项菜单)上获得一个过滤器图标。我使用了一个带有可绘制图像的空菜单,单击该菜单会显示一个DialogFragment(对话框片段)。但这并不好用,因为选项菜单上会显示一个空标题项,单击打开的对话框片段。 谢谢你的帮助。 谢谢

选项的菜单文件菜单:

<?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>
这是我的片段类:

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>
清单:

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>

在菜单文件中更改此行
android:showAsAction=“ifRoom | withText”
用这个
app:showAsAction=“always”

也许这会有所帮助。在您的菜单文件中,用这一行更改这一行,我刚刚试过。。但它不起作用。非常感谢您的帮助。您确定您使用的是
app:showAsAction=“always”
而不是
android:showAsAction=“always”
是的,但它仍然不起作用。非常感谢。它现在起作用了。。。第一次没有正确阅读。。。谢谢你,亚伯拉罕