出于某种原因, myonCreateOptionsMenu和onPrepareOptionsMenu运行两次(在两种方法开始时使用日志输入进行检查)。这发生在我拥有的多个片段中,包括一些非常基本的片段(只是膨胀菜单,没有别的)。
这是onCreateOptionsMenu有此问题的s之一:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.actionbuttons_add_removeall, menu);
optionsMenu = menu;
}
Run Code Online (Sandbox Code Playgroud)
什么会导致这些方法被多次调用(主要是两次)?
我发现这是由RecyclerView我正在使用的(以某种方式)引起的。有这个问题的所有视图都使用 RV,我之前提到的视图没有这个问题,确实没有。有了这些新信息,RV 的哪一部分可能会引起这个问题?
我发现我打电话.invalidateOptionsMenu()的getItemCount()的方法Adapter。我认为这会调用onPrepareOptionsMenu(),但阅读文档,它似乎调用onCreateOptionsMenu(). 我可能得到onCreate..()和onPrepare..()逆转这里,要去检查出来了。
我刚刚意识到我的RecyclerViewAdapter,getItemCount()方法中的选项菜单无效,该方法显然在首次创建片段时运行。
@Override
public int getItemCount() {
int tableSize = getTableSizeMethod();
if (tableSize < 1) {
if (!AppManagerFragment.hideDeleteAllButton) {
AppManagerFragment.hideDeleteAllButton = true;
((Activity) context).invalidateOptionsMenu();
return 0;
} …Run Code Online (Sandbox Code Playgroud) 有没有方便的方法在多个活动中显示相同的选项菜单选项?
示例:在我的应用程序中,我以三种方式之一显示电视指南.
对于选项菜单TabActivity,代码非常简单......
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
menu.clear();
inflater.inflate(R.menu.gv_options_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.view:
...
...
}
}
Run Code Online (Sandbox Code Playgroud)
...但此刻我似乎需要将其复制/粘贴到我不喜欢的其他两个活动中.如果我更改选项菜单代码,我还需要为其他两个菜单代码执行此操作.
我能想到的唯一选择是我有一个'helper'类(POJO)我可以添加一个方法并传入context以允许使用该getMenuInflator()方法和另一个方法我可以将结果传递item.getItemId()给使用switch的进程-案件.
使用相同的"选项"菜单进行多个活动的常规方法是什么?
我创建了一个带有我自己制作的图标的选项菜单(24px x 24px),但它没有显示.
我的xml中的代码(位于res /菜单中)如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_insert"
android:icon="@drawable/menu_add"
android:title="@string/menu_insert" />
</menu>
Run Code Online (Sandbox Code Playgroud)
菜单在我的Activity.java文件中创建,如文档中所述:
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.list_menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
PS项目的标题一直位于左侧,我似乎无法找到文档中的任何位置如何居中(显然是android:重力不在那里完成)
谢谢
我有一个应用程序,它使用ICS中操作栏上的选项卡,其中每个选项卡中都有一个片段.在某些情况下,在我按下操作栏上选项菜单上的按钮后,然后旋转设备,我得到一个NullPointerException.我可以使用相同的步骤可靠地重现它,但在某些情况下(如果我不按动作栏上的任何按钮)不会产生异常.该异常似乎没有引用我的代码中的任何行,并且在方向更改后重新创建活动期间发生.
这是例外:
09-18 20:56:22.357: E/AndroidRuntime(689): FATAL EXCEPTION: main
09-18 20:56:22.357: E/AndroidRuntime(689): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.andavapps.flightbot/com.andavapps.flightbot.FlightBotActivity}: java.lang.NullPointerException
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3351)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.access$700(ActivityThread.java:123)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.os.Looper.loop(Looper.java:137)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-18 20:56:22.357: E/AndroidRuntime(689): at java.lang.reflect.Method.invokeNative(Native Method)
09-18 20:56:22.357: E/AndroidRuntime(689): at java.lang.reflect.Method.invoke(Method.java:511)
09-18 20:56:22.357: E/AndroidRuntime(689): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-18 20:56:22.357: E/AndroidRuntime(689): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-18 …Run Code Online (Sandbox Code Playgroud) android nullpointerexception android-optionsmenu android-actionbar android-tabs
我是android的初学者,我正在开发小型Android应用程序.在我的应用程序中,我正在使用Sherlock库.我的应用程序包含一个主要活动和两个片段.在我的列表片段结构看起来像
public class MyCards extends SherlockListFragment
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside fragment on create");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on activity created");
}
private void displayCards(int type) {
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside display cards");
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mycards, container, …Run Code Online (Sandbox Code Playgroud) android android-optionsmenu actionbarsherlock android-listfragment
我似乎无法找到Menu softkey我的Nexus 9和nexus 5 [Android版Lollipop].我开发的所有应用程序option menu都没有显示menu softkey.所以我无法访问它option menu.
我的一些应用程序也Actionbar/Toolbar因为他们的设计要求而不使用,因此我正在寻找一种无需添加的解决方案Actionbar/Toolbar.
所以我想知道,有没有办法展示Menu softKey in Android Lollipop?
更新:
这是我在Nexus 9上找到的示例应用程序.您可以看到它具有action overflow button遗留应用程序.谁能告诉我这是怎么做到的?
要更改默认选项菜单图标颜色(3垂直dote),我尝试添加
<item name="android:textColorSecondary">@color/white</item>
Run Code Online (Sandbox Code Playgroud)
但它没有任何改变.我认为它不起作用因为我的AppTheme父是Theme.AppCompat.Light.NoActionBar.所以有人可以帮我这个吗?
我有一个选项菜单,里面有一堆复选框。我想打开或关闭其中的一堆,但每次我只检查一个时菜单都会自动关闭。我可以防止菜单在选择某个项目后关闭吗?我还想控制关闭何时发生以及何时被阻止。
Activity.cs(不包括与选项菜单无关的所有内容)
public class Activity: ReactiveActivity<ViewModel>, IAppCompatCallback
{
public override bool OnCreateOptionsMenu(IMenu menu)
{
var inflater = MenuInflater;
inflater.Inflate(Resource.Menu.actions, menu);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
if(item.ItemId == Resource.Id.action_settings) {
StartActivity(typeof(SettingsActivity));
}
else {
//Code changing the view based on selections
}
return base.OnOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
动作.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Choose options...">
<menu>
<group android:checkableBehavior="all">
<item android:id="@+id/checkOption1"
android:title="Option 1"
android:checked="true" />
<item android:id="@+id/checkOption2"
android:title="Option 2"
android:checked="true" />
<item android:id="@+id/checkOption3"
android:title="Option 3"
android:checked="true" /> …Run Code Online (Sandbox Code Playgroud) 我已经为我的操作栏实现了自定义视图.除此之外,我还需要一个OptionMenu. 有没有办法仍然使用默认的OptionMenu?我不想自己设计整个菜单及其功能.
顺便说一句,我的活动扩展了android.support.v7.app.AppCompatActivity
用于为我的操作栏实现自定义视图的代码
custom_action_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentInsetEnd="0dp"
app:contentInsetStart="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/custom_B"
android:layout_width="60dp"
android:layout_height="30dp" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
我把它包含在我的主XML中:
<include
layout="@layout/custom_action_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
对于OptionsMenu,我放了一些从未打印过的日志
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.i(Constants.APP_NAME, "hello1");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.i(Constants.APP_NAME, "hello2");
}
Run Code Online (Sandbox Code Playgroud) android android-optionsmenu android-actionbar android-toolbar
I have a simple activity with options menu setup with the code shown below. The problem i'm experiencing is that after expanding and collapsing the searchview, menu items with app:showAsAction="ifRoom" do not appear, even though there is room on the toolbar. Menu items with app:showAsAction="never" on the other hand do appear.
menu_simple_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search_white_24dp"
android:title="@string/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView" />
<item
android:id="@+id/action_filter"
android:icon="@drawable/ic_filter_list_white_24dp"
android:title="@string/action_filter"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_sort"
android:icon="@drawable/ic_sort_white_24dp"
android:title="@string/action_sort"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_print_all"
android:icon="@drawable/ic_print_white_24dp" …Run Code Online (Sandbox Code Playgroud)