【问题标题】:Action bar display based on fragment displayed基于显示的片段的操作栏显示
【发布时间】:2015-12-18 15:46:26
【问题描述】:

我正在创建一个具有 Facebook 登录功能的应用程序。主屏幕有两个根据登录状态显示的片段。如果您未登录,则会显示一个带有登录按钮的主屏幕,其中没有操作栏。如果用户已登录,Main Activity 会显示欢迎页面,其中包含操作栏。我知道要在活动中隐藏操作栏,我们可以将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();
}   

}

【问题讨论】:

  • 我尝试从各自的片段中调用 getActivity().getActionBar.show() 和 getActivity().getActionBar.hide() 。但这也不起作用。我在两个片段中都看到了操作栏。

标签: android facebook android-fragments android-actionbar


【解决方案1】:

您可以隐藏和显示操作栏

  getSupportActionBar().hide();

  getSupportActionBar().show();

【讨论】:

  • 我不确定这对这里有什么帮助。能不能好好解释一下。我无法使用片段中的这些功能。
  • 你可以使用 getActivity().getSupportActionBar().hide();像这样
  • 我没有扩展 ActionBarActivity。所以我无法获得该选项。
  • 你在扩展 fragmentactivity 什么?
  • 是的,我正在扩展片段活动。
【解决方案2】:
public class MyFragment extends Fragment {
@Override
    public void onCreate(Bundle savedInstanceState) {           
        super.onCreate(savedInstanceState); 
((YourActivity)getActivity()).getSupportActionBar().hide();
    }  
}

【讨论】:

  • 请不要发布仅代码的答案。不管它多么“简单”,一切都应该包含一些解释。
猜你喜欢
  • 2014-10-13
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多