2017-04-23 120 views
1

我试图显示操作栏在片段的起点,但一些动作后,我隐藏操作栏使用((AppCompatActivity) getActivity()).getSupportActionBar().hide();,然后我让使用toolbar.setVisibility(View.VISIBLE);所有工作正常,除了像我的工具栏可见OnClick Listener on toolbar。我的代码的OnClick监听器工具栏上的ImageView不工作

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary"> 
    <ImageView 
     android:id="@+id/back" 
     android:layout_width="wrap_content" 
     android:clickable="true" 
     android:layout_height="wrap_content" 
     android:src="@drawable/action_bar_home_button"/> 
</android.support.v7.widget.Toolbar> 

在我的XML和Java中如下因素 - >

actionBar =((AppCompatActivity) getActivity()).getSupportActionBar(); 

    toolbar = (Toolbar)rootView.findViewById(R.id.toolbar); 
    activity = (AppCompatActivity) getActivity(); 
    toolbar.setVisibility(View.GONE); 
    back = (ImageView) toolbar.findViewById(R.id.back); 
    back.setOnClickListener(this); 
    back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      toolbar.setVisibility(View.GONE); 
      Logger.i("onBack"); 
     } 
    }); 

功能,使操作栏隐藏和工具栏可见 - >

public void readFilterRealm(Boolean isShortcut) { 
    ((AppCompatActivity) getActivity()).getSupportActionBar().hide(); 
    activity.getSupportActionBar().hide(); 
    actionBar.hide(); 
    toolbar.setVisibility(View.VISIBLE);} 

没有日志打印。 但是,当我试图添加 activity.setSupportActionBar(toolbar); activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 我越来越严重的崩溃 This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

我需要两个工具栏,操作栏,所以我不能删除任何一个。所有帮助表示赞赏在此先感谢(:

+0

你调用了'setSupportActionBar(toolbar);'? – rafsanahmad007

+0

是的,我也尝试过,但没有任何作品! –

回答

0

试试这个代码片段:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment, container, false); 
     Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); 

     AppCompatActivity activity = (AppCompatActivity) getActivity(); 
     activity.setSupportActionBar(toolbar); 
     activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     ImageView imageButton = (ImageView) toolbar.findViewById(R.id.back); 
     imageButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
} 

编辑

设置工具栏,你需要添加:

清单中

<activity android:name=".YourActivity" 
     android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE --> 

res/values/style s.xml:

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
+0

请参阅我编辑的问题。谢谢你的时间。 –

+0

你尝试第二种方式吗? – rafsanahmad007

+0

是的,但我没有工作。 –

0

我遇到了同样的问题。我无法用我的java文件做,所以我所做的是在我的xml文件,我写android:onclick="trigger"

,然后在Java文件我犯了一个方法叫做trigger

void trigger(View view){ 
 
//code 
 
}

这对我有效。