1. ホーム
  2. java

[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない

2022-01-24 15:39:48

質問

アクションバーのタイトルを設定しようとしているのですが、エラーメッセージ "メソッドがそのスーパークラスのメソッドをオーバーライドしていません" が表示されます。フラグメントを拡張しています。

以下は、問題のある部分です。

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

以下は、クラス全体のコードです(まだ作業中なので未完成です)。

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




}

解決方法は?

クラス Fragment またはそのスーパークラスのいずれかがメソッドを持たないようです。 public void setTitle(CharSequence title) を使用することができないので @Override アノテーションを使用します。そのアノテーションを削除すれば問題ありません。