java - 为什么会出现这些错误?

标签 java android

这些是错误:

未为 HomeFragment 类型定义方法 getMenuInflater() - 第 27 行

HomeFragment 类型的 onCreateOptionsMenu(Menu) 方法必须覆盖或实现父类(super class)型方法 - 第 29 行

HomeFragment 类型的 onCreateOptionsMenu(Menu) 方法必须覆盖或实现父类(super class)型方法 - 第 25 行

所有这些都在我的HomeFragment.java

package com.colourity.snatsh;

import com.colourity.snatsh.R;
import java.util.ArrayList;
import com.colourity.snatsh.adapter.NavDrawerListAdapter;
import com.colourity.snatsh.model.NavDrawerItem;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;


public class HomeFragment extends Fragment {

    public HomeFragment(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_home, container, false);

        return rootView;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

当我尝试在 HomeFragment 而不是 MainActivity 上设置操作栏图标时会发生这种情况。我是新来的,所以对我放轻松。任何帮助都会很棒。一个解决方案会很好。

编辑

我更新的代码:

    package com.colourity.snatsh;

import com.colourity.snatsh.R;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;

public class HomeFragment extends Fragment {

    public HomeFragment(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_home, container, false);

        return rootView;
    }

    @Override
    public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater1 = getMenuInflater();
        inflater1.inflate(R.menu.main, menu);
        return;
    }

    private MenuInflater getMenuInflater() {
            // TODO Auto-generated method stub
        return null;
    }   



}

最佳答案

简短回答:Fragment 不能有操作栏,只有 Activity 可以。

更长的答案:Fragment 类不包含您尝试使用或覆盖的任何方法。这些都是 Activity 类的方法。有关每个类中可用的方法的更多信息,我强烈建议您熟悉 the Android developer guides .特别是,您可以使用 Activity 的文档和 Fragment了解每个类中有哪些方法。

长答案: fragment 可以将菜单项添加到由包含 Activity 维护的 ActionBar。为此,您必须覆盖 onCreateOptionsMenu (Menu menu, MenuInflater inflater) .请注意此签名与 onCreateOptionsMenu(Menu menu) 有何不同来自 Activity

关于java - 为什么会出现这些错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21963155/

相关文章:

android - 如何避免在具有不同功能的数据库中同时使用同一张表

android - 尝试通过双击 fragment 启动电子邮件应用程序

android - 如何禁用Android Studio代码风格警告 "... can be simplified to ..."

java - 哪个更有效: if (null == variable) or if (variable == null)?

java - Gradle 在 Eclipse 项目中找不到服务器运行时

java - 接口(interface)可以随着时间发展吗?

java - if 语句错误

java - StringRedisTemplate线程安全能力

java - If 语句 评估

android - 在 Activity 之间传递文本