基于显示的片段显示操作栏

时间:2014-05-03 04:14:21

标签: android facebook android-fragments android-actionbar

我正在创建一个具有Facebook登录功能的应用。主屏幕有两个片段,根据登录状态显示。如果您尚未登录,则会显示一个带有登录按钮的主屏幕,其中没有操作栏。如果用户已登录,则“主要活动”将显示欢迎页面,其中包含操作栏。我知道要在活动中隐藏操作栏,我们可以将android:theme="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen"添加到该特定活动中。但我不希望ActionBar在整个活动中消失,因为我必须在另一个片段上显示它。

我的问题是:当用户处于登录状态时,如何显示操作栏,并显示欢迎屏幕片段?

这是我在登录片段中的代码,我不想要操作栏:

    public class LoginFragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, 
        ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.login, 
            container, false);
    //getActivity().getActionBar().hide();

    return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    getActivity().getActionBar().hide();
}   
}

我想要Action BAr的Welcome Fragment的代码如下所示:

public class WelcomeFragment extends Fragment{

private static final String TAG = "WelcomeFragment";

@Override
public View onCreateView(LayoutInflater inflater, 
        ViewGroup container, Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View view = inflater.inflate(R.layout.welcome, 
            container, false);
    //getActivity().getActionBar().show();
    return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    getActivity().getActionBar().show();
}   

}

2 个答案:

答案 0 :(得分:1)

您可以隐藏并显示操作栏

  getSupportActionBar().hide();

  getSupportActionBar().show();

答案 1 :(得分:0)

public class MyFragment extends Fragment {
@Override
    public void onCreate(Bundle savedInstanceState) {           
        super.onCreate(savedInstanceState); 
((YourActivity)getActivity()).getSupportActionBar().hide();
    }  
}