2014-02-23 72 views
1

这些都是错误的:为什么我会收到这些错误?

The method getMenuInflater() is undefined for the type HomeFragment -Line 27

The method onCreateOptionsMenu(Menu) of type HomeFragment must override or implement a supertype method -Line 29

The method onCreateOptionsMenu(Menu) of type HomeFragment must override or implement a supertype method -Line 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); 
    } 
} 

这当我尝试在0123上使用动作栏图标时发生,而不是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; 
    } 



} 
+0

...现在,显示您的更新代码。 –

+0

不确定它是否正确,但正在更新。 @ shree202 – user3342131

+0

如果您尝试在您的活动中添加ActionBar,请参阅本教程:http://developer.android.com/guide/topics/ui/actionbar.html –

回答

3

简短的回答:片段不能有一个操作栏,只有活动可。

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

长答案:片段可以将菜单项添加到由Activity维护的ActionBar。为此,您必须覆盖onCreateOptionsMenu (Menu menu, MenuInflater inflater)。请注意,此签名与onCreateOptionsMenu(Menu menu)之间的差异从Activity

+0

操作栏图标?但那么Kik怎么做呢http://imgur.com/jIdhlBu,FzOhJzN#0 http://imgur.com/jIdhlBu,FzOhJzN#1 – user3342131

+0

然后我会如何将它与导航抽屉合并?由于他们使用的片段 – user3342131

+0

@ user3342131见我的编辑更多细节 –