Android:在OnSeekBarChangeListener中显示Toast?

时间:2012-04-04 21:25:22

标签: android seekbar

我想在用户移动时显示搜索栏的值,类似于联系人ListView显示滚动时所在部分的字母的方式(Android 2.3.x)。

有人建议如何实施吗?我在OnSeekBarChangeListener的onProgressChanged()方法中考虑Toast但是在获取上下文以显示()Toast时遇到了麻烦。

编辑:此外,Seekbar位于ListView的一行中,因此OnSeekBarChangeListener位于类Extendending ArrayAdapter中,而不是通常的“Activity”,因此getBaseContext()等内容不可用于该方法。

2 个答案:

答案 0 :(得分:1)

你可以使用:

Toast.makeText(Main.this, "Message", Toast.LENGTH_LONG).show();

Toast.makeText(getBaseContext(), "Message", Toast.LENGTH_LONG).show();

第一种方式:全局使用Application

public class MyApp extends Application {
    private static MyApp instance;

    public static MyApp getInstance() {
        return instance;
    }

    public static Context getContext(){
        return instance.getApplicationContext();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }
}

第二种方式:Context传递给您的类构造函数或类

中的方法

答案 1 :(得分:1)

感谢您的回复。我在这两个建议中都使用了一点并提出了这个建议,但即使在500毫秒时,Toast的更新速度也不足以跟上seekBar的变化。 HM ...

public class adapListControl extends ArrayAdapter <String>
{
   final Context mCtx;
   ...

   public adapListControl (Context context, int textViewResourceId)
   {
      super (context, textViewResourceId);
      this.mCtx = context;
   }
   ...

   OnSeekBarChangeListener osbl = new OnSeekBarChangeListener ()
   {
      @Override
      public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser)
      { 
         Log.d (TAG, " prog change:" + progress);
         Toast.makeText(mCtx, "" + progress, 500).show();
      }
      ...
   }