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> 
+0

と多分これは役立ちます。あなたのメニューファイルの変更では、このライン 'アンドロイド:showAsAction = |この1 'アプリで「ifRoom withText」 ' :showAsActionは=「常に」' –

+0

は私だけ...という試みたが、それは働いていません。私はあなたの助けに感謝します。 –

+0

あなたは 'app:showAsAction =" always "を使用していますが、' android:showAsAction = "always"ではないことを確信していますか –

答えて

2

このライン android:showAsAction="ifRoom|withText" この1 app:showAsAction="always"

関連する問題