2017-07-06 46 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; 
      } 
     }); 

當使用setOnItemLongClickListener代替setOnLongClickListener然後長按當項目在旋轉的下拉列表中應該產生一個烤麪包,但它是不會放棄這樣的嗎?

+0

你有沒有試過想把任何字符串例如Toast消息中的「Hello Toast」,而不是使用t.getText(),看看它是否有效? –

+0

@AaronThompson是的,沒有任何反應 –

回答

0

longClickListener設置爲Spinner類,您將該視圖強制轉換爲偵聽器中的TextView。這就是爲什麼該應用程序崩潰。

Spinner.setOnLongClickListener不是每個適配器項目的偵聽器。

你在找什麼是Spinner.setOnItemSelectedListener(new OnItemSelectedListener())

+0

非常感謝....知道了 –

+0

還有一個疑問,當我使用setOnItemLongClickListener()時,它應該給吐司,當我長時間按下微調項目,但它不會來。我正在編輯中添加該代碼。請也澄清一下。提前感謝 –