2014-05-20 55 views
1

我有這個seekbar和這個TextView,我想在其中顯示seekbar的實際進度。 爲TextView的實際XML:從SeekBar設置進度

  <SeekBar 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/seekBar1" 
      android:layout_below="@+id/dimension_text"/> 

      <TextView 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:text="@string/num_dimension" //where num_dimension is a number 
      android:id="@+id/textViewProgress"/> 

和實際的Java:

public class MainActivity extends ActionBarActivity { 
int p=0; 

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

    final TextView t1=(TextView) findViewById(R.id.test); 
    final SeekBar sk=(SeekBar) findViewById(R.id.seekBar1); 
    final TextView textProgress = (TextView)findViewById(R.id.textViewProgress); 

    sk.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
// TODO Auto-generated method stub 
      if(p<12) 
      { 
       p=12; 
       sk.setProgress(p); 
      } 

     } 
     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
// TODO Auto-generated method stub 
     } 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { 
// TODO Auto-generated method stub 
      p=progress; 
      t1.setTextSize(p); 
      textProgress.setText(p); //this is the line that should do the work 
     } 
    }); 

每當我在搜索條我的應用挖掘是強制關閉。 所以我對此有點困惑,我做錯了什麼?

這是logcat的:

05-20 17:59:04.141 29872-29872/com.myapplication2.app D/dalvikvm﹕ GC_FOR_ALLOC freed 424K, 14% free 10583K/12268K, paused 23ms, total 23ms 
05-20 17:59:04.171 29872-29872/com.myapplication2.app I/Xposed﹕ [IconThemer/Mod] [nexbit.moonshine.icons] Loading replacements for package com.myapplication2.app 
05-20 17:59:04.251 29872-29872/com.myapplication2.app D/dalvikvm﹕ GC_FOR_ALLOC freed 274K, 13% free 10804K/12348K, paused 19ms, total 19ms 
05-20 17:59:04.312 29872-29872/com.myapplication2.app I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 
05-20 17:59:04.382 29872-29872/com.myapplication2.app D/OpenGLRenderer﹕ Enabling debug mode 0 
05-20 17:59:10.548 29872-29872/com.myapplication2.app W/ResourceType﹕ No package identifier when getting value for resource number 0x00000002 
05-20 17:59:10.548 29872-29872/com.myapplication2.app E/InputEventReceiver﹕ Exception dispatching input event. 
05-20 17:59:10.548 29872-29872/com.myapplication2.app D/AndroidRuntime﹕ Shutting down VM 
05-20 17:59:10.548 29872-29872/com.myapplication2.app W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41543ba8) 
05-20 17:59:10.558 29872-29872/com.myapplication2.app E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.myapplication2.app, PID: 29872 
    android.content.res.Resources$NotFoundException: String resource ID #0x2 
      at android.content.res.Resources.getText(Resources.java:244) 
      at android.content.res.XResources.getText(XResources.java:508) 
      at android.widget.TextView.setText(TextView.java:3888) 
      at com.myapplication2.app.MainActivity$2.onProgressChanged(MainActivity.java:77) 
      at android.widget.SeekBar.onProgressRefresh(SeekBar.java:91) 
      at android.widget.ProgressBar.doRefreshProgress(ProgressBar.java:655) 
      at android.widget.ProgressBar.refreshProgress(ProgressBar.java:667) 
      at android.widget.ProgressBar.setProgress(ProgressBar.java:714) 
      at android.widget.AbsSeekBar.trackTouchEvent(AbsSeekBar.java:451) 
      at android.widget.AbsSeekBar.onTouchEvent(AbsSeekBar.java:379) 
      at android.view.View.dispatchTouchEvent(View.java:7706) 
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068) 
      at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515) 
      at android.app.Activity.dispatchTouchEvent(Activity.java:2458) 
      at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016) 
      at android.view.View.dispatchPointerEvent(View.java:7886) 
      at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954) 
      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833) 
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525) 
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426) 
      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582) 
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426) 
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
      at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602) 
      at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582) 
      at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553) 
      at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682) 
      at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 
      at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 
      at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176) 
      at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5655) 
      at  android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5701) 
      at android.view.Choreographer$Ca 
+0

你可以請發佈logcat嗎? – MJ93

+0

@ MJ93在這裏你去 – Lampione

回答

1

演員p爲字符串。

您在無意中使用此重載:

http://developer.android.com/reference/android/widget/TextView.html#setText(int)

public final void setText (int resid) 

它試圖獲取一個字符串資源有一個ID等於p(你傳遞presid),而且也沒有這樣的資源,導致異常。

變化

textProgress.setText(p); 

textProgress.setText(Integer.toString(p)); 

這將調用適當的過載:

public final void setText (CharSequence text) 

而且您的應用程序不會崩潰。

學會使用Logcat,否則你會把自己留在黑暗中...

+0

謝謝!我仍然是Java的新手,所以我會把所有這些東西放在腦海裏。我會更多地研究logcat,再次感謝你! :) – Lampione

+0

@Lampione沒問題,我們都需要從某個地方開始。 –