2015-02-09 74 views
0
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; 
    } 
    } 
} 
} 

这是代码。ImageButton点击运动事件错误

<?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> 

这就是XML。 add1,add2,add3和提交ImageButtons都在ScrollView中。

当我按下add1 ImageButton,我想add2和site2 ImageButtons变得可见,但相反,它会引发以下错误。

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

我在做什么错?

PS:所有findViewById()调用都在onClick()方法中,因为如果在onCreate()中调用它们,则会引发NullPointerExeption。

回答

0

这些findViewById调用onClick没有意义。不知道为什么你得到一个空指针异常,在onCreate中调用它们。 onClick永远不会在这种情况下被调用,因为在创建活动中没有任何内容是分配按钮来查看您的onClick方法;按钮将默认为不分配监听器。此外,使用Activity作为onClickListener也不是一个好主意。

您的代码应该是这个样子:

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); 
     } 
    }); 
} 
+0

太谢谢你了! 另外,我认为我在onCreate()中声明了所有的错误,因为在XML中,submit是一个Button,而我在AddActivity类中声明它为ImageButton。只是为别人着想! – 2015-02-09 16:47:38

0

findViewById()调用,特别是setOnClickListener()调用应该已经在onCreate()中。在onClick()中使用setOnClickListener(),我怀疑onClick是否曾被调用过。

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