2015-12-12 2 views
0

Приложение используется как обратный отсчет с кнопкой запуска и остановки. Но я не знаю, что не так ...Android: К сожалению, приложение остановлено

Я использую Android Studio 1.5.1 с его эмулятором или с моим смартфоном, но при этом происходит один и тот же сбой.

Вот моя основная деятельность:

<?xml version="1.0" encoding="utf-8"?> 
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    android:layout_width="fill_parent" 
 
    android:layout_height="fill_parent" 
 
    tools:context="letscho.timer.MainActivity"> 
 

 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:id="@+id/btnStart" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_centerVertical="true" 
 
     android:layout_marginLeft="28dp" 
 
     android:text="Start"/> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:id="@+id/btnStop" 
 
     android:layout_alignParentRight="true" 
 
     android:layout_centerVertical="true" 
 
     android:layout_marginRight="67dp" 
 
     android:text="Stop"/> 
 

 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:id="@+id/textViewTime" 
 
     android:layout_above="@+id/btnStart" 
 
     android:layout_centerHorizontal="true" 
 
     android:layout_marginBottom="17dp" 
 
     android:textSize="25sp"/> 
 
</RelativeLayout>

И мой MainActivity:

package letscho.timer; 
 

 
import android.annotation.SuppressLint; 
 
import android.annotation.TargetApi; 
 
import android.os.Build; 
 
import android.os.CountDownTimer; 
 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.view.View; 
 
import android.widget.Button; 
 
import android.widget.TextView; 
 

 
import java.util.concurrent.TimeUnit; 
 

 

 
@TargetApi(Build.VERSION_CODES.GINGERBREAD) 
 
@SuppressLint("NewApi") 
 
public class MainActivity extends AppCompatActivity { 
 

 
    Button btnStart, btnStop; 
 
    TextView textViewTime; 
 

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

 
     btnStart = (Button) findViewById(R.id.btnStart); 
 
     btnStart = (Button) findViewById(R.id.btnStop); 
 
     textViewTime = (TextView) findViewById(R.id.textViewTime); 
 

 
     textViewTime.setText("00:03:00"); 
 

 
     final CounterClass timer = new CounterClass(18000, 1000); 
 
     btnStart.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       timer.start(); 
 
      } 
 
     }); 
 

 
     btnStop.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       timer.cancel(); 
 
      } 
 
     }); 
 

 
    } 
 

 
    @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
 
    @SuppressLint("NewApi") 
 
    public class CounterClass extends CountDownTimer { 
 
     /** 
 
     * @param millisInFuture The number of millis in the future from the call 
 
     *       to {@link #start()} until the countdown is done and {@link #onFinish()} 
 
     *       is called. 
 
     * @param countDownInterval The interval along the way to receive 
 
     *       {@link #onTick(long)} callbacks. 
 
     */ 
 
     public CounterClass(long millisInFuture, long countDownInterval) { 
 
      super(millisInFuture, countDownInterval); 
 
     } 
 

 
     @SuppressLint("NewApi") 
 
     @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
 
     @Override 
 
     public void onTick(long millisUntilFinished) { 
 

 
      long millis = millisUntilFinished; 
 
      String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), 
 
        TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), 
 
        TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
 
      System.out.println(hms); 
 
      textViewTime.setText(hms); 
 

 
     } 
 

 
     @Override 
 
     public void onFinish() { 
 
      textViewTime.setText("00:00:00"); 
 

 
     } 
 
    } 
 

 
}

+1

Вы можете разместить журнал? –

+0

Сообщение об ошибке logcat. – ridoy

+3

https://stackoverflow.com/questions/23353173/unappro-myapp-has-stopped-how-can-i-solve-this – CommonsWare

ответ

4

хорошо ваша проблема

btnStart = (Button) findViewById(R.id.btnStart); 
    btnStart = (Button) findViewById(R.id.btnStop); 

оба они ссылаются на то же место, то вы установите ClickListener на Null refrenece.

btnStop.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      timer.cancel(); 
     } 
    }); 

btnStop Null.

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