Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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在选择ABS项目时崩溃_Android_Actionbarsherlock - Fatal编程技术网

Android在选择ABS项目时崩溃

Android在选择ABS项目时崩溃,android,actionbarsherlock,Android,Actionbarsherlock,不管出于什么原因,当我点击其中一个按钮时,我的ActionBar崩溃了。以下是选项SelectMenu的代码: public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.refresh_button_actionbar: if (this.frag instanceof DashboardFragment)

不管出于什么原因,当我点击其中一个按钮时,我的ActionBar崩溃了。以下是选项SelectMenu的代码:

public boolean onOptionsItemSelected(MenuItem item)
{   
    switch (item.getItemId())
    {
    case R.id.refresh_button_actionbar:
        if (this.frag instanceof DashboardFragment)
            dashboardFrag.refresh();
        break;
    default: 
        return false;
    }
    return true;
}
下面是日志:

07-30 19:17:52.981: E/AndroidRuntime(1358): FATAL EXCEPTION: main
07-30 19:17:52.981: E/AndroidRuntime(1358): java.lang.NullPointerException
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.view.menu.MenuItemImpl.toString(MenuItemImpl.java:496)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at java.lang.StringBuilder.append(StringBuilder.java:202)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:201)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:980)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at android.view.View.performClick(View.java:4204)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at android.view.View$PerformClick.run(View.java:17355)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at android.os.Handler.handleCallback(Handler.java:725)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at android.os.Looper.loop(Looper.java:137)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at android.app.ActivityThread.main(ActivityThread.java:5041)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at java.lang.reflect.Method.invokeNative(Native Method)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at java.lang.reflect.Method.invoke(Method.java:511)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-30 19:17:52.981: E/AndroidRuntime(1358):     at dalvik.system.NativeStart.main(Native Method)
你知道我做错了什么吗?我想这和碎片比较有关。另外,要注意的是,当我刚刚将代码设置为“return true”(因为它只返回true),它将重新启动活动。这是故意的行为吗?如果是的话,我该如何应对呢

以下是我的作品:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

import com.actifio.android.R;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.ActionBar.TabListener;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;

您正在使用Android的菜单和MenuInflater,但应该使用ActionBarSherlock附带的类。检查这是否是您为他们导入的内容:

import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
详细的解释请看下面给出的答案。你的问题应该得到解决。下次确认是否已经提出了此类问题

编辑:

我想出了一个调整(不是很干净,但工作)来解决你的问题。希望您的工作区中有actionbarsharlock项目。转到程序包
com.actionbarsharlock.app
,然后找到文件
SharlockFragmentActivity.java
,打开它并转到第201行(CMD/CTRL+L,然后输入行号),现在注释掉以下行:

try
        {
            if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
        }catch(Exception e)
        {
            Log.d(TAG,"Exception");
        }

您的问题应该得到解决。

问题是,我使用的导入来自Action Bar Sherlock。他们完全匹配,我不明白。查看日志cat输出。
java.lang.NullPointerException 07-30 19:17:52.981:E/AndroidRuntime(1358):位于com.android.internal.view.menu.menuitempl.toString(menuitempl.java:496)
如果使用了sharlock导入,那么错误应该来自
com.actionbarsharlock.internal.view.menu.menuitempl
类。请重新检查您的代码。恐怕您已经导入了这两个,但使用的是android。已将我的导入添加到主线程。这些是我正在使用的唯一工具:/n没有使用任何默认的Android工具。我正在用getSupportActionBar()实例化操作栏,用getSupportMenuInflater()实例化充气机。就是这样。非常感谢你!!