2017-07-06 7 views
1
public class MainActivity extends AppCompatActivity { 

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

     Spinner s = new Spinner(this); 

     RelativeLayout rl = (RelativeLayout) 
     findViewById(R.id.activity_main); 

     String ss[] = {"--Select Item--", "Item1", "Item2", "Item3", 
         "Item4", "Item5"}; 

     ArrayAdapter<String> ad = new ArrayAdapter<String>(this, 
          android.R.layout.simple_dropdown_item_1line, ss); 

     s.setAdapter(ad); 


     rl.addView(s); 


     s.setOnLongClickListener(new View.OnLongClickListener() { 
      @Override 
      public boolean onLongClick(View v) { 

       TextView t = (TextView) v; 
       Toast.makeText(MainActivity.this, t.getText().toString(), 
           Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     }); 
} 

} 

私はスピナーの項目を長く押しているときに、コードが上記のように指定されているはずのトーストは表示されません。また、スピナー自体を長押しすると(スピナーのドロップダウンリストの項目ではなく)、アプリがクラッシュしています。どうしてこんなことに?スピナーの項目をクリックして乾杯していない

編集1:ロングトーストを生成する必要がありますスピナーのドロップダウンリストに項目を押すとそれはそう与えていないときに

s.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
       TextView t = (TextView) view; 
       Toast.makeText(MainActivity.this, t.getText().toString(), Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     }); 

が、代わりにsetOnLongClickListenerのsetOnItemLongClickListenerを使用していますか?

+0

です。トーストメッセージの "Hello Toast"を使用し、t.getText()を使用せず、それが動作するかどうかを確認します。 –

+0

@AaronThompsonはい、何も起こらなかった –

答えて

0

longClickListenerSpinnerクラスに設定されており、そのビューをリスナー内のTextViewにキャストしています。それがアプリがクラッシュする理由です。

Spinner.setOnLongClickListenerは、各アダプター項目のリスナーではありません。

あなたが探しているものはSpinner.setOnItemSelectedListener(new OnItemSelectedListener())

+0

ありがとう....それは –

+0

もう1つの疑問を私がsetOnItemLongClickListener()を使用しているときに私はスピナー項目を長押しするが、来ていないトーストを与える必要があります。私は編集でそのコードを追加しています。あまりにも明確にしてください。事前に感謝 –

関連する問題