【问题标题】:Android spinner with button and TOAST带有按钮和 TOAST 的 Android 微调器
【发布时间】:2018-04-20 18:52:46
【问题描述】:

我的代码有问题,我的代码应该在单击按钮时显示祝酒词。

public TextView textView,textView2;

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);


}
public void start(View view) {

    Context context = getApplicationContext();
    Toast.makeText(context, String.valueOf(spinner.getSelectedItemPosition()) , Toast.LENGTH_LONG).show();
}

我不知道为什么 Toast 消息不显示并且按下按钮时程序崩溃。

这是我在activity_main.xml中的微调器

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="73dp"
    android:id="@+id/spinner2"
    android:entries="@array/jednostki"/>

xml 中的按钮

<Button
    android:text="Start"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/spinner"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="71dp"
    android:id="@+id/button"
    android:onClick="start"/>

和带有项目的数组

<string-array name="jednostki">
    <item>Celsjusze</item>
    <item>Farenheity</item>
    <item>Kelwiny</item>
</string-array>

【问题讨论】:

  • xml 文件也会很有帮助。 “开始”方法是按钮的 onClickListener 吗?
  • 显示您的 xml 文件。

标签: java android button spinner toast


【解决方案1】:

您似乎没有通过 ArrayAdapter 填充微调器,如文档 here 中所示。因此,除非您使用 xml 属性 android:entries="@array/array_name" 填充微调器的方法(我们看不到),否则当您调用 spinner.getSelectedItemPosition() 时,它将抛出空指针异常。

【讨论】:

    【解决方案2】:

    你做错了。仅在 java 类中尝试此微调器。试试这个例子

    final Spinner spinner=findViewById(R.id.home_spiner);
        final String[] items = new String[]{"AddCustomer","EditCustomer","AssignCustomer","RemoveCustomer"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        spinner.setAdapter(adapter);
    

    现在制作一个按钮并使用 toast 来显示值

     btn_select.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                String str=spinner.getSelectedItem().toString();
    
                Toast.makeText(SalesManagerActivity.this,str, Toast.LENGTH_SHORT).show();
    
            }
        });
    

    【讨论】:

      【解决方案3】:

      这是因为您使用的是未填充的微调器。您需要使用spinner2 而不是spinner。因此,将您的代码更改为以下内容:

      // You should move the spinner variable here to 
      // make it variable class scope.
      Spinner spinner, spinner2;
      
      protected void onCreate(Bundle savedInstanceState) {
      
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
      
         spinner = (Spinner) findViewById(R.id.spinner);
         spinner2 = (Spinner) findViewById(R.id.spinner2);
      }
      
      public void start(View view) {
        Toast.makeText(this, String.valueOf(spinner2.getSelectedItemPosition()), 
                       Toast.LENGTH_LONG).show();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-27
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多