Java ImageButton上的运动事件错误单击

Java ImageButton上的运动事件错误单击,java,android,pointers,events,motion,Java,Android,Pointers,Events,Motion,这是代码 public class AddActivity extends Activity implements OnClickListener{ String[] info = new String[11]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_layout

这是代码

public class AddActivity extends Activity implements OnClickListener{
String[] info =  new String[11];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_layout);                
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    TextView keyString = (TextView)findViewById(R.id.keyString);
    TextView site1 = (TextView)findViewById(R.id.site1);
    TextView site2 = (TextView)findViewById(R.id.site2);
    TextView site3 = (TextView)findViewById(R.id.site3);
    ImageButton submit = (ImageButton)findViewById(R.id.submit);
    ImageButton add1 = (ImageButton)findViewById(R.id.add1);
    ImageButton add2 = (ImageButton)findViewById(R.id.add2);
    ImageButton add3 = (ImageButton)findViewById(R.id.add3);

    submit.setOnClickListener((OnClickListener) this);
    add1.setOnClickListener((OnClickListener) this);
    add2.setOnClickListener((OnClickListener) this);
    add3.setOnClickListener((OnClickListener) this);

    int id = v.getId();
    switch(id){
    case R.id.submit:{
        submitEntry(info);
        break;
    }
    case R.id.add1:{
        add2.setVisibility(View.VISIBLE);
        site2.setVisibility(View.VISIBLE);
        break;
    }
    }
}
}
这就是XML。add1、add2、add3和submit ImageButtons都在滚动视图中

当我按下add1 ImageButton时,我希望add2和site2 ImageButton变得可见,但它会抛出以下错误

运动事件的指针计数0无效;值必须介于1和16之间

我做错了什么


PS:所有findViewById调用都在onClick方法中,因为如果我在onCreate中调用它们,就会抛出NullPointerExection。

findViewById调用,尤其是setOnClickListener调用应该在onCreate中。由于onClick中有setOnClickListener,我怀疑onClick是否被调用过

我们需要更多的日志才能找到确切的问题。

在onclick中找到的那些viewbydcall没有意义。不确定为什么在onCreate中调用它们时会出现空指针异常。在本例中,不会调用onClick,因为创建活动时没有分配按钮来查看onClick方法;这些按钮将默认为没有指定侦听器。将活动用作onclick侦听器也不是一个好主意

您的代码应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/key_string"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:visibility="invisible" />

<EditText
    android:id="@+id/keyString"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:visibility="invisible" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/site_string"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:visibility="invisible" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <ImageButton
                android:id="@+id/add1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_action_new" />

            <EditText
                android:id="@+id/site1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/url_hint"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:visibility="invisible" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <ImageButton
                android:id="@+id/add2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_action_new"
                android:visibility="invisible" />

            <EditText
                android:id="@+id/site2"
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:text="@string/url_hint"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:visibility="invisible" />
        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:visibility="invisible" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <ImageButton
                android:id="@+id/add3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_action_new"
                android:visibility="invisible" />

            <EditText
                android:id="@+id/site3"
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:text="@string/url_hint"
                android:visibility="invisible"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:visibility="invisible" />
       <Button
            android:id="@+id/submit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/submit_buttom" />
    </LinearLayout>
</ScrollView>
</LinearLayout>

非常感谢你!另外,我认为在onCreate中声明它时出错,因为在XML中,submit是一个按钮,而我在AddActivity类中将它声明为ImageButton。只是为其他人做准备!
public class AddActivity extends Activity {
// https://source.android.com/source/code-style.html
// info -> mInfo; non-public, non-static field!
String[] mInfo =  new String[11];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_layout);

    TextView keyString = (TextView)findViewById(R.id.keyString);
    TextView site1 = (TextView)findViewById(R.id.site1);
    TextView site2 = (TextView)findViewById(R.id.site2);
    TextView site3 = (TextView)findViewById(R.id.site3);
    Button submit = (Button)findViewById(R.id.submit);
    ImageButton add1 = (ImageButton)findViewById(R.id.add1);
    ImageButton add2 = (ImageButton)findViewById(R.id.add2);
    ImageButton add3 = (ImageButton)findViewById(R.id.add3);

    add1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        add2.setVisibility(View.VISIBLE);
        site2.setVisibility(View.VISIBLE);
        }
    });

    submit.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        submitEntry(mInfo);
        }
    });
}