这些是错误:
未为 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/