【问题标题】:android: ClassCastException when working with context menu?android:使用上下文菜单时出现 ClassCastException?
【发布时间】:2013-04-17 08:57:36
【问题描述】:

在我的应用程序类 ProjectFragActivtiy 遇到异常,如

java.lang.ClassCastException: com.actionbarsherlock.internal.view.menu.MenuBuilder 
at com.oj.bs.ProjectFragActivity.onCreateOptionsMenu
(ProjectFragActivity.java:49).

在应用程序菜单按钮用于注销操作但遇到异常。是否有另一种方法来实现 actionbarsherlock 中的菜单。 有人对此有解决方案吗?提前致谢。

以下是 ProjectFragActivtiy 类

    package com.oj.bs;

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;

public class ProjectFragActivity extends SherlockFragmentActivity {

    SessionManager sessionMngr ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sessionMngr = new SessionManager(getApplicationContext());

        Toast.makeText(getApplicationContext(), "User Login Status: " + sessionMngr .isLoggedIn(), 
                Toast.LENGTH_LONG).show();
        sessionMngr.checkLogin();

        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayShowTitleEnabled(true);

        Tab tab = actionBar.newTab().
                setText("Residential").
                setTabListener(new ResidentialFragActivity()).
                setIcon(R.drawable.residential);
        actionBar.addTab(tab);

        tab = actionBar.newTab().
              setText("Commercial").
              setTabListener(new  CommercialFragActivity()).
              setIcon(R.drawable.commercial);

        actionBar.addTab(tab);

    }
    public void Logout(View v) {
        sessionMngr.logoutUser();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu m) {
        getMenuInflater().inflate(R.menu.menu_logout, (android.view.Menu) m);
        return true;
    }

}

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    如下更改onCreateOptionsMenu()

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
       inflater.inflate(R.menu.menu_logout, (com.actionbarsherlock.view.Menu) menu);
       return true;
    }
    

    注意:

    为了从 XML 扩充您的菜单,您应该在活动中调用 getSupportMenuInflater()。片段回调已经有一个 inflater 的实例作为参数。

    【讨论】:

    • Mr.Shankar 我集成了上面的代码,但遇到了 android.view.InflateException 之类的异常:无法解析 com.ojaswitech.bookinscape.ProjectFragActivity 类中的菜单项 onClick 处理程序注销。你能帮帮我吗。
    • 检查我更新的答案并查看此链接stackoverflow.com/q/11245829/1329126
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多