工具栏上的ImageView上的OnClick Listener无法正常工作

时间:2017-04-23 18:01:06

标签: android android-imageview toolbar android-toolbar

我正在尝试在片段开始时显示操作栏,但在执行某些操作后,我使用((AppCompatActivity) getActivity()).getSupportActionBar().hide();隐藏操作栏,然后使用toolbar.setVisibility(View.VISIBLE);使我的工具栏可见除了工具栏上的图像OnClick Listener之外,它可以正常工作。我的代码

 <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中输入 - &gt;

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");
        }
    });

使操作栏隐藏和工具栏可见的功能 - &gt;

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.

我需要工具栏和操作栏,所以我无法删除任何一个。感谢所有帮助(:

2 个答案:

答案 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 / styles.xml中的

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

答案 1 :(得分:0)

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

然后在java文件中我创建了一个名为trigger的方法:

void trigger(View view){
//code
}

这对我有用。