2012-04-04 11 views
2

ユーザーが移動したときにシークバーの値を表示したいのですが、連絡先ListViewがスクロールするときに表示されているセクションの文字(Android 2.3.x)の表示方法と似ています。Android:OnSeekBarChangeListenerにトーストを表示しますか?

誰でもどのように実装するのですか?私はOnSeekBarChangeListenerのonProgressChanged()メソッドでToastを考えていましたが、Toastを表示するためのコンテキストを取得するのに問題がありました。

EDIT:また、SeekbarはListViewの行にあるため、OnSeekBarChangeListenerはArrayAdapterを拡張するクラスにあり、通常の「Activity」ではなく、getBaseContext()などのメソッドはメソッドで使用できません。

使用できる

答えて

1

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

または

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

最初の方法:

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; 
    } 
} 

グローバル第二の方法Applicationクラスを使用します。あなたのクラスのコンストラクタに パスContextをかにクラス内のメソッド

+0

リスナーはArrayAdapterを拡張するクラスにあるため、Seekbarはリストビューにあります。私はgetBaseContext()を利用できません。 – wufoo

0

お返事ありがとうございます。私は両方の提案から少しを使用し、これを思い付いたが、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(); 
     } 
     ... 
    } 
関連する問題