2012-02-10 2 views
0

Я просто пытаюсь инициализировать переменные с помощью кнопок и переменных. Но когда я пытаюсь инициализировать, если я устанавливаю свои OnClickListeners для кнопок, приложения неожиданно останавливаются. Если я прокомментирую строки установки OnClickListener, приложение работает нормально. Поэтому я уверен, что эта проблема, безусловно, причем OnClickListener.I также придает моей деятельности в AndroidManifest.xml Имя класса Data.javaOnClickListener Button не работает

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; 

      } 

     } 

    } 

и соответствующая Manifest добавлена ​​активность

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

Какая ошибка при установке OnClickListener ... это что-то не так, что я делаю?

+0

кейс (R.id.bSA): будет ли это работать? Я обычно использую случай R.id.bSA: –

+0

@Padma Kumar: не имеет значения .. не так ли? –

ответ

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 (это); ........ Просто хотел сказать, что я использую ECLIPSE и построю для уровня API 7 –

+1

заменяем порядок 'initialise()' и 'setContentView()'. Вам нужно установить представление содержимого * до того, как вы попытаетесь получить доступ к представлениям (которые вы делаете в 'initialise()') –

+0

@Espiandev ... Спасибо, тонна сэр .. это действительно сработало .. !! –

1

Вы настраиваете просмотр содержимого после вашего метода инициализации. Вам нужно сделать это, прежде чем пытаться получить доступ к компонентам пользовательского интерфейса.

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

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

Эспиандев прав, 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 будет завышен, слушатели кликов будут назначены автоматически.

Смежные вопросы