2012-02-10 65 views
0

我只是想通過變量按鈕和變量來啓動。 但是,當我嘗試初始化,如果我設置我的按鈕的OnClickListeners應用程序意外停止。 如果我註釋設置OnClickListener的行應用程序工作正常。所以,我相信這個問題肯定是與OnClickListener.I還附上在AndroidManifest.xml 我的活動類的名字是Data.javaButton的OnClickListener無法正常工作

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Data extends Activity implements OnClickListener { 

    Button start, startFor; 
    EditText sendET; 
    TextView gotAnswer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     initialise(); 
     start.setOnClickListener(this); 
     **startFor.setOnClickListener(this); 
     setContentView(R.layout.get);** 
    } 

    private void initialise() { 
     // TODO Auto-generated method stub 
     start = (Button) findViewById(R.id.bSA); 
     startFor = (Button) findViewById(R.id.bSAFR); 
     sen 

    dET = (EditText) findViewById(R.id.etSend); 
      gotAnswer = (TextView) findViewById(R.id.tvGot); 


     } 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      switch (v.getId()) { 
      case (R.id.bSA): 
       break; 
      case (R.id.bSAFR): 
       break; 

      } 

     } 

    } 

及相應的清單中添加活性

<activity 
      android:name=".Data" 
      android:label="@string/app_name" > 
     </activity> 

設置OnClickListener時發生的錯誤...是他們的錯誤,我正在做什麼?

+0

case(R.id.bSA):這個工作嗎?我將大致使用案例R.id.bSA: – 2012-02-10 16:00:02

+0

@Padma Kumar:它有什麼區別..是嗎? – 2012-02-12 05:09:29

回答

4

您尚未爲您的活動指定一個視圖。在撥打super.onCreate(..)之後,請致電setContentView(R.id.mylayoutid),其中mylayoutid是包含按鈕的xml佈局的名稱。

+0

是的,我試過..但這仍然doens't工作...再次問題在於OnClickListener 這是修改後的代碼... initialise(); \t \t setContentView(R.layout.get); \t \t start.setOnClickListener(this); \t \t startFor.setOnClickListener(this); ........ 只是想告訴我,我正在使用ECLIPSE和建立API級別7 – 2012-02-12 06:26:40

+1

交換'initialise()'和'setContentView()'的順序。你需要設置內容視圖*之前*你嘗試訪問視圖(你正在做'initialise()') – 2012-02-12 14:08:16

+0

@Espiandev ...謝謝一噸先生..它真的工作..! – 2012-02-12 15:32:04

1

在初始化方法後,您正在設置您的內容視圖。您需要在嘗試訪問您的UI組件之前執行此操作。

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

     initialise(); 
     start.setOnClickListener(this); 
    } 
0

Espiandev是對的,setContentView(R.id.mylayoutid)必須在超級通話結束後纔會出現。

此外,它可能會更容易讓你在你的佈局XML做到這一點:

<Button android:id="@+id/bSA" 
     ... 
     android:onClick="onClick"/> 
<Button android:id="@+id/bSAFR" 
     ... 
     android:onClick="onClick"/> 

你甚至不必實行View.OnClickListener這種方式,或撥打setOnClickListener - 當佈局XML已充氣,點擊監聽器將自動分配。