2014-02-22 23 views
0

我正在使用包含片段的應用程序的導航抽屜。我也在使用操作按鈕。但是當我使用抽屜改變活動時,動作按鈕就在所有活動上。我只想要在其中一個片段上。這是我的代碼1活動的動作按鈕?

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); 
    } 
} 

而這些都是錯誤。

The method onCreateOptionsMenu(Menu) of type HomeFragment must override or implement a supertype method HomeFragment.java
The method getMenuInflater() is undefined for the type HomeFragment HomeFragment.java /Snatsh/src/com/colourity/snatsh
The method onCreateOptionsMenu(Menu, MenuInflater) in the type Fragment is not applicable for the arguments (Menu)
當我在做我的MainActivity它工作正常,但是當我將它交給我HomeFragment錯誤顯示。

+0

'Fragment類型的方法onCreateOptionsMenu(Menu,MenuInflater)不適用於參數(Menu)'不夠清楚嗎?這裏有個提示:你需要像錯誤說的那樣改變方法簽名。 –

+0

然後,我將從閱讀一些Java書開始,然後深入Android開發。基本上,'Fragment'和'Activity'有一個'onCreateOptionsMenu()',但它們有不同的簽名;一個需要一個'ManuInflater'另一個只需要'Menu' – Emmanuel

回答

1

但是當我將它移動到我的HomeFragment錯誤顯示。

您需要確保您使用的是與Fragment類對應的onCreateoptionsMenu()簽名。您可以在Fragment中刪除此方法,然後開始輸入其名稱,然後使用IDE自動完成功能使用正確的方法簽名。

+0

我對此很陌生,所以任何幫助都會很棒。所以我會添加到我的'HomeFragment'? '@Override \t protected void onCreate(Bundle savedInstanceState){ \t \t super.onCreate(savedInstanceState); \t \t setContentView(R.layout.activity_main);' – Anonymous

+0

不能。您不能在'Fragment'的'onCreate()'中擴充佈局。你使用'onCreateView()'。你發佈的方法是'Activity'的'onCreate()'。 '片段''onCreate()'的簽名是'public void onCreate(Bundle savedInstanceState)';它是'公衆' – Emmanuel

+0

那麼我將如何開始? – Anonymous