如何在android中将工具栏添加到片段中?

如何在android中将工具栏添加到片段中?,android,android-fragments,android-actionbar,android-toolbar,Android,Android Fragments,Android Actionbar,Android Toolbar,我有一个名为HomeFragment.java的片段,它扩展了fragment类 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

我有一个名为HomeFragment.java的片段,它扩展了fragment类

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;
    }
}
但我在这一行中遇到了错误:

getActivity().setSupportActionController(toolbar)
错误是:

Cannot resolve method 'setSupportActionController(android.support.v7.widget.Toolbar)'
还有一个条件,我不能将我的HomeFragment扩展到AppCombatActivity。它必须仅保留为片段,即公共类HomeFragment扩展片段

这种情况是因为这段代码中的第5行

    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()是:

因此,如果我将公共类HomeFragment Extendes Fragment更改为公共类HomeFragment Extendes AppCombatActivity,上述代码中的return语句将给出不兼容类型错误

请帮助我解决此错误,因为此错误,我无法创建工具栏或actionbar。 任何帮助都是值得的。
谢谢

首先将活动从
getActivity()
强制转换为
AppCompatActivity
。我认为这将解决您的错误:

((AppCompatActivity) getActivity()).getSupportActionBar(toolbar);
或者在您的情况下:

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

getActivity()
返回一个
FragmentActivity
,您需要获取
AppCompatActivity
返回的内容。希望这有帮助

如果不是活动,为什么要执行
HomeFragment扩展AppCompatActivity
?您可能需要强制转换
getActivity
((AppCompatActivity)getActivity()).setSupportActionBar(editGroupTool); //toolbar id
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle(" "); 
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity)getActivity()).setSupportActionBar(editGroupTool); //toolbar id
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle(" "); 
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);