2017-06-16 65 views
1

我想在ProgressDialog中获取计数器,文本和图像。我设法得到文字&图像,但挣扎显示计数器。 我想获得这样的事:android-ProgressDialog中的CountDownTimer

enter image description here

,所以我失踪柜台上面,可以有人帮忙吗?

MainActivity.java

 TextView mTextView_timeCounter; 

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

     StorageSingleton.getInstance().setString(null, null); 

     progress = new ProgressDialog(this, R.layout.countdown); 
     progress.setCancelable(false); 

     //for displaying counter 
     mTextView_timeCounter = (TextView) findViewById(R.id.myTimerTextView); 

     progress = new ProgressDialog(this, R.layout.countdown); 

     progress.setCancelable(false); 

     progress.setIndeterminate(true); 
     progress.setIndeterminateDrawable(getResources().getDrawable(R.drawable.timer_logo)); 


     new CountDownTimer(60000, 1000) { 

      public void onTick(long millisUntilFinished) { 
       long seconds = millisUntilFinished/1000; 
       String countdown = String.format("%02d", seconds/60) + ":" + String.format("%02d", seconds % 60); 
       progress.setMessage(countdown); 

       progress.setContentView(R.layout.countdown); 

       mTextView_timeCounter.setText(countdown);// <- this line causing error 

      } 

      public void onFinish() { 
       progress.dismiss(); 
      } 
     }.start(); 

     progress.show(); 

错误:

PID: 31908 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference这是由线

mTextView_timeCounter.setText(countdown); 引起的,但我不知道为什么。请在下面找到

代码Countdown.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:clickable="false" 
      android:padding="30dp" 
      android:layout_margin="35dp" 
      android:orientation="vertical" 
      android:weightSum="1"> 


<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Test in Progress..." 
    android:textColor="@color/sample12" 
    android:textSize="@dimen/header_text" 
    android:textStyle="bold" 
    android:textAlignment="center" 
    android:id="@+id/testInProgress" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_gravity="center_horizontal"/> 

<ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="260dp" 
     android:layout_height="260dp" 
     android:src="@drawable/timer_logo" 
     android:clickable="false" 
     android:contentDescription="hourglass" 
     android:layout_below="@+id/textView14" 
     android:layout_alignParentEnd="true" 
     /> 

<TextView 
    android:layout_width="91dp" 
    android:layout_height="wrap_content" 
    android:id="@+id/myTimerTextView" 
    android:layout_gravity="center_horizontal" 
    android:layout_weight="0.10" 
    android:text=""/> 

+0

'mTextView_timeCounter'未初始化。你必须在'onTick'方法中初始化它 – PeMaCN

回答

2

NullPointerException is thrown when an application attempts to use an object reference that has the null value .

你应该屁股查看对象

progress.setContentView(R.layout.countdown); 
mTextView_timeCounter = (TextView)progress.findViewById(R.id.myTimerTextView); 
mTextView_timeCounter.setText(countdown); 
2

更改为mTextView_timeCounter = (TextView) progress.findViewById(R.id.myTimerTextView);

你是找鉴于活动的布局,但在TextView的倒计时