2012-02-10 17 views
0

ボタンと変数で変数を初期化しようとしています。 しかし、ボタンのOnClickListenersを設定した場合、アプリケーションを初期化しようとすると、アプリケーションが予期せず停止します。 私はOnClickListenerの設定の行をコメントする場合、アプリケーションは正常に動作しています。だから私はこの問題は、クラス名がData.javaボタンの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> 
あるAndroidManifest.xmlを に私の活動を添付したOnClickListener.Iに間違いであることを確信しています

OnClickListenerを設定する際のエラーとは何ですか?彼らの何かが間違っていますか?

+0

ケース(R.id.bSA):これは動作しますか? R.id.bSA: –

+0

@パドマ・クマール:何か違いはありますか? –

答えて

4

アクティビティのビューを指定していません。 super.onCreate(..)に電話をした直後にsetContentView(R.id.mylayoutid)と呼んでください。ここで、mylayoutidはボタンを含むxmlレイアウトの名前です。

+0

はい私は試みました..しかし、これはまだ動作しません...再び問題はOnClickListenerにあります これは修正されたコードです... initialise(); \t \t setContentView(R.layout.get); \t \t start.setOnClickListener(this); \t \t startFor.setOnClickListener(this); ........ 私はECLIPSEを使用しており、APIレベル7のために構築しています。 –

+1

は 'initialise()'と 'setContentView()'の順番を入れ替えました。ビューにアクセスする前にコンテンツビューを設定する必要があります(これは 'initialise()'で行います) –

+0

@Espiandev ...ありがとうございました。 –

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でこれを実行しやすいかもしれません:あなたもView.OnClickListenerをこのように実装するか、setOnClickListener呼び出す必要はありません

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

- ときレイアウトXMLクリックリスナーが自動的に割り当てられます。

関連する問題