2015-02-09 75 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是否曾被調用過。

我們需要更多的日誌才能找到確切的問題。