2017-03-27 12 views
-5

私はアクションバーのタイトルを設定しようとしていますが、私には "メソッドはそのスーパークラスのメソッドをオーバーライドしません"というエラーメッセージが表示されます。私は断片を伸ばしています。メソッドはそのスーパークラスのメソッドをオーバーライドしません

私はまだそれに

package com.android.styles.radius360; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.view.Menu; 


/** 
* Created by user on 3/23/2017. 
*/ 

public class HomePageFragment extends Fragment { 

private String[] mOptions; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
private CharSequence mTitle; 

private ActionBarDrawerToggle mDrawerToggle; 
private CharSequence mDrawerTitle; 



public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.home_page, container, false); 


    mOptions = getResources().getStringArray(R.array.options_array); 
    mDrawerLayout = (DrawerLayout) v.findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView) v.findViewById(R.id.left_drawer); 

    // Set the adapter for the list view 
    mDrawerList.setAdapter(new ArrayAdapter<String>(getActivity(), 
      R.layout.drawer_list_item, mOptions)); 
    // Set the list's click listener 
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    mTitle = mDrawerTitle = getActivity().getTitle(); 
    mDrawerLayout = (DrawerLayout) v.findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, 
      R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      getActivity().getActionBar().setTitle(mTitle); 
      getActivity().invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getActivity().getActionBar().setTitle(mDrawerTitle); 
      getActivity().invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

    // Set the drawer toggle as the DrawerListener 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 




return v; 
} 

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    // If the nav drawer is open, hide action items related to the content view 
    super.onPrepareOptionsMenu(menu); 
} 

@Override 
public void setTitle(CharSequence title) { 
    mTitle = title; 
    getActivity().getActionBar().setTitle(mTitle); 
} 


/* The click listner for ListView in the navigation drawer */ 
private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     selectItem(position); 
    } 
} 

/** Swaps fragments in the main content view */ 
private void selectItem(int position) { 
    // Create a new fragment and specify the planet to show based on position 
    if(position ==0) 
    { 
     FragmentManager fragmentManager = getFragmentManager(); 

     SettingsPageActivity settings = new SettingsPageActivity(); 
     Fragment fragment = settings.createFragment(); 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .commit(); 

    } 
    // Insert the fragment by replacing any existing fragment 




    // Highlight the selected item, update the title, and close the drawer 
    mDrawerList.setItemChecked(position, true); 
    mDrawerLayout.closeDrawer(mDrawerList); 
} 




} 
+3

'Fragment'にはそのメソッドがないので、何も上書きしていません。そのすぐ上にある '@ Override'アノテーションを削除してください。 –

+0

あなたは 'setTitle()'をどこで呼び出していますか?私はあなたのコードで見つけることができません。 'getActivity()。getActionBar()。setTitle(mTitle);'これは 'Fragment'ではなく' ActionBar'です。 –

+0

@KevinVanRyckegem '@ Override'アノテーションはエラーの原因となります。 – shmosel

答えて

1

クラスFragmentかのいずれかを働いているので、ここではここ

@Override 
public void setTitle(CharSequence title) { 
    mTitle = title; 
    getActivity().getActionBar().setTitle(mTitle); 
} 

で問題が発生した部分イムは全体のクラスのコード(その不完全でいますそのスーパークラスはメソッドpublic void setTitle(CharSequence title)を持たないように見えますので、@Overrideアノテーションを使用することはできません。そのアノテーションを削除することができ、うまくいくはずです。

関連する問題