Android Onclick View v.getId返回-1

时间:2014-11-20 09:38:15

标签: android

考虑代码已完成。为什么v.getId()返回-1?

我使用黄油刀加载,toolbar.getId有值

MainActivity extends ActionBarActivity implements  View.OnClickListener{

 @InjectView(R.id.toolbar)
Toolbar toolbar;

protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.mainlayout);
   ButterKnife.inject(this);
   toolbar.setNavigationOnClickListener(this);
}

public void onClick(View v) {
        Log.d("Tag", v.getId() + " " + toolbar.getId());
        if (v.getId() == toolbar.getId()) {

        }
    }
}

我只是不想使用类似的东西在工具栏中的Navigationbuton上设置onclick

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

我的xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="56dp" 
        app:contentInsetLeft="14dp"
        app:contentInsetRight="14dp"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar"></android.support.v7.widget.Toolbar>


</LinearLayout>

4 个答案:

答案 0 :(得分:2)

  

为什么v.getId()返回-1

-1,是public static final int NO_ID的值。这意味着您点击的视图没有ID

答案 1 :(得分:1)

没关系。如果点击导航,我无法捕捉到这一点。因为导航工具栏中的单击视图是没有Id的ImageView。

我仍然按照我想要的方式使用,我就这样做了

public void onClick(View v) {             if (v.getId() == R.id.button1) {

        }else  if (v.getId() == R.id.button2) {

        }else{
          //Navigation Button Here
        }

    }
}

答案 2 :(得分:0)

可能是你没有在xml布局中设置id。检查一下。

答案 3 :(得分:0)

我认为您正在通过代码创建工具栏的引用,而不是设置它的ID,这就是为什么当您检查工具栏上的点击时getId返回-1。您可以做的是首先在res / values下的ids.xml中声明id,如: -

<?xml version="1.0" encoding="utf-8"?>
<resources>
        <item type="id" name="toolbar />              
</resources>

并设置工具栏的ID,如: -

toolbar.setId(R.id.toolbar);

您可以找到更多信息here: -

或者更多关于android资源here

的信息