0

私はHomeFragment.javaという名前のフラグメントを持っており、それはFragmentクラスを拡張しています。アンドロイドの断片にツールバーを追加するには?

getActivity().setSupportActionController(toolbar) 

をし、エラーがある:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.Toolbar; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.example.android.test.R; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.widget.Toolbar; 

public class HomeFragment extends Fragment { 

    private Toolbar toolbar; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.fragment_profile,container,false); 
     toolbar = (Toolbar) view.findViewById(R.id.toolbar); 
     getActivity().setSupportActionController(toolbar); 
     //setSupportActionBar(toolbar); 
     return view; 
    } 
} 

しかし、私はラインでエラーを取得しています

Cannot resolve method 'setSupportActionController(android.support.v7.widget.Toolbar)' 

そして私はを拡張することはできません条件ありHomeFragmentAppCombatActivityフラグメントのみ、すなわち public class HomeFragment extends Fragmentとしなければなりません。だから、

private Fragment getHomeFragment() { 
    switch (navItemIndex) { 
     case 0: 
      // home 
      HomeFragment homeFragment = new HomeFragment(); 
      return homeFragment; 
     case 1: 
      // photos 
      PhotosFragment photosFragment = new PhotosFragment(); 
      return photosFragment; 
     case 2: 
      // movies fragment 
      MoviesFragment moviesFragment = new MoviesFragment(); 
      return moviesFragment; 
     case 3: 
      // notifications fragment 
      NotificationsFragment notificationsFragment = new NotificationsFragment(); 
      return notificationsFragment; 

     case 4: 
      // settings fragment 
      SettingsFragment settingsFragment = new SettingsFragment(); 
      return settingsFragment; 
     default: 
      return new HomeFragment(); 
    } 
} 

私はパブリッククラスHomeFragmentがにフラグメントを拡張して変更した場合:

条件がある)ので、このコード

Runnable mPendingRunnable = new Runnable() { 
     @Override 
     public void run() { 
      // update the main content by replacing fragments 
      Fragment fragment = getHomeFragment(); 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, 
        android.R.anim.fade_out); 
      fragmentTransaction.replace(R.id.frame, fragment, CURRENT_TAG); 
      fragmentTransaction.commitAllowingStateLoss(); 
     } 
    }; 

    // If mPendingRunnable is not null, then add to the message queue 
    if (mPendingRunnable != null) { 
     mHandler.post(mPendingRunnable); 
    } 

    // show or hide the fab button 
    toggleFab(); 

    //Closing drawer on item click 
    drawer.closeDrawers(); 

    // refresh toolbar menu 
    invalidateOptionsMenu(); 
} 

の作品と私getHomeFragment(の行番号5でありますpublic class HomeFragmentはAppCombatActivityを拡張します、上記のコードのreturn文はに互換性のない型エラーを与えます。

このエラーが原因でツールバーまたはアクションバーを作成できません。 何か助けになるでしょう。 ありがとうございます!

+1

アクティビティでない場合、なぜHomeFragment extends AppCompatActivity'を実行しますか? 'getActivity'をキャストする必要があります。恐らく –

答えて

2

まず、getActivity()からAppCompatActivityにアクティビティをキャストします。

((AppCompatActivity) getActivity()).getSupportActionBar(toolbar); 

またはあなたの場合

((AppCompatActivity) getActivity()).setSupportActionController(toolbar); 

getActivity()FragmentActivityを返すには、あなたはAppCompatActivityが返さ取得する必要があります:私は、これはあなたのエラーを解決すると思います。お役に立てれば!

+0

ありがとうございます!出来た! :-) – neerav94

関連する問題