Установите прогресс с помощью SeekBar

У меня есть эта панель поиска и этот TextView, в котором я хочу показать фактический ход поискового бара. Фактический XML для textview:

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

 </seekbar>

И фактическая 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
 }
 });

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

Это логарифм:

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: *********************************************: 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
</qegldrvapi_eglinitialize:320>
1 ответ

Передача p в строку.

Вы непреднамеренно используете эту перегрузку:

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

public final void setText (int resid)

Кто пытается получить строковый ресурс с идентификатором, равным p (вы передаете p как resid), и нет такого ресурса, который вызывает исключение.

+ Изменить

textProgress.setText(p);

в

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

Это вызовет надлежащую перегрузку:

public final void setText (CharSequence text)

И ваше приложение не будет разбиваться.

Научитесь использовать Logcat, иначе вы оставите себя в темноте...

licensed under cc by-sa 3.0 with attribution.