2014-05-01 3 views
0

Я написал этот код для простой игры. В принципе, я хочу, чтобы игрок нажимал кнопку столько раз, сколько возможно за 10 секунд. Все работает, и код даже компилируется, но когда я запускаю приложение, он не показывает мне счет (Text field пуст). Что я делаю не так?Android: Редактирование Текстовое поле с кнопкой

public class ButtonActivity extends Activity implements OnClickListener { 

private int score; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_button); 
    new CountDownTimer(11000, 1000) { 

     TextView TimerText = (TextView) findViewById(R.id.TimerText); 

     public void onTick(long millisUntilFinished) { 
      TimerText.setText("" + millisUntilFinished/1000); 
     } 

     public void onFinish() { 
      setContentView(R.layout.activity_score); 
     } 
    }.start(); 
} 

private void screenUpdate() { 
    TextView screenPoints = (TextView) findViewById(R.id.Scoringboard); 
    screenPoints.setText(String.valueOf(score)); 
} 

@Override 
public void onClick(View view) { 
    Button button = (Button) findViewById(R.id.button1); 
    button.setOnClickListener(this); 
    score++; 
    screenUpdate();  
} 

} 
+0

Используйте эту функцию, 'screenupdate (score)' и используйте кнопку в 'oncreate method'. – prakash

+0

Функция screenupdate прекрасна, поскольку из нее можно получить счет. – elbuild

+1

Возможно, вам стоит изменить название вопроса, потому что это не связано. Вы бы это заметили, когда вы отлаживали свой код с помощью контрольных точек. – RvdK

ответ

1

Попробуйте переместить эти две строки в onCreate().

Button button =(Button) findViewById(R.id.button1); 
button.setOnClickListener(this); 

В основном OnClick вызывается только если клик слушатель прилагается ... и вы не можете прикрепить его внутри OnClick, потому что это не будет называться, пока не прилагается :). Перемещение 2 строк внутри onCreate гарантирует, что слушатель подключен.

+0

Это работает! Большое вам спасибо, вы мне очень помогли :)! – user3592262

+0

Рад быть полезным :) – elbuild

0

Сначала вы переместите этот код на onCreate() метода.

Button button =(Button) findViewById(R.id.button1); 
button.setOnClickListener(this); 
0
// try this way, hope this will help you... 

**XML** code 

**activity_button** 
<?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:gravity="center" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txtTimer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="20sp" 
     android:textStyle="bold" 
     android:layout_marginTop="10dp"/> 

    <Button 
     android:id="@+id/btnScore" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:text="Click For Score"/> 

</LinearLayout> 

**activity_score** 
<?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:gravity="center" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txtScore" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="20sp" 
     android:textStyle="bold"/> 

</LinearLayout> 

**ACTIVITY** code 

**ButtonActivity** 
    // try this way, hope this will help you... 

    **XML** code 

    **activity_button** 
    <?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:gravity="center" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/txtTimer" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:layout_marginTop="10dp"/> 

     <Button 
      android:id="@+id/btnScore" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="Click For Score"/> 

    </LinearLayout> 

    **activity_score** 
    <?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:gravity="center" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/txtScore" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="20sp" 
      android:textStyle="bold"/> 

    </LinearLayout> 

    **ACTIVITY** code 

    **ButtonActivity** 
    public class ButtonActivity extends Activity { 

     private TextView txtScore ; 
     private TextView txtTimer ; 
     private Button btnScore; 
     private int score; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_button); 
      txtTimer = (TextView) findViewById(R.id.txtTimer); 
      btnScore = (Button) findViewById(R.id.btnScore); 
      new CountDownTimer(11000, 1000) { 

       public void onTick(long millisUntilFinished) { 
        txtTimer.setText("Hurry!!!,You Have Only "+(millisUntilFinished/1000)+" Second Left."); 
       } 

       public void onFinish() { 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          setContentView(R.layout.activity_score); 
          txtScore = (TextView) findViewById(R.id.txtScore); 
          txtScore.setText("Your Score Is >> "+score); 
         } 
        }); 
       } 
      }.start(); 
      btnScore.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        score++; 
       } 
      }); 
     } 

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