【问题标题】:How to perform the click of Actionbar item in Sherlock Fragment in Android?如何在Android的Sherlock Fragment中执行Actionbar项的点击?
【发布时间】:2022-01-12 19:56:59
【问题描述】:

我想在我的 Sherlock Fragment 中单击操作栏项目。 我的项目显示在操作栏上的片段类上,但是当我单击项目时,没有显示 Toast 消息。

这是我的夏洛克片段代码:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
         inflater.inflate(R.menu.profile_menu_items, menu);
         super.onCreateOptionsMenu(menu, inflater);
         
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
         switch (item.getItemId()) {
         case R.id.Online:
            // do s.th.
             Toast.makeText(getActivity(), "online", Toast.LENGTH_SHORT).show();
            return true;
         default:
        return super.onOptionsItemSelected(item);
    }
     


@Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
    
        super.onCreate(savedInstanceState);
         setHasOptionsMenu(true);
        
    }}

这里是菜单文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
 <item android:id="@+id/Online"
       android:showAsAction="always"
        android:title="Online"/>
</menu>

【问题讨论】:

  • 使用从父活动调用的接口和方法

标签: android android-fragments actionbarsherlock


【解决方案1】:

您可以为此使用接口,创建一个接口并在您的 MainActivity 中实现此接口,就像在我的情况下一样 -

public class MainActivity extends Activity implements SwitherInterface{
// rest of the code with implementation of changeToDrawer()
}

定义你的界面 -

public interface SwitherInterface {
    public void changeToDrawer();
}

在您的片段中声明接口并在 onAttach 方法中对其进行初始化 -

SwitherInterface switcher;

@Override
    public void onAttach(Activity a) {
        super.onAttach(a);
        switcher = (SwitherInterface) a;
    }

然后你可以直接使用声明的方法 -

switcher.changeToDrawer();

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    ActionBar 代码在 Activity(不是 Fragment)中处理 - 因此您必须在此处执行业务逻辑。

    这就是 AB 的设计工作方式,也是当前处理框架回调的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2013-07-16
      相关资源
      最近更新 更多