【问题标题】:Get spinner selected item and passing data获取微调器选定项目并传递数据
【发布时间】:2021-12-04 20:30:21
【问题描述】:

我想要做的是设置文本取决于用户选择的微调器项目。但是运行应用程序时没有任何显示,也没有错误。我是否错过了导致结果没有出来的任何步骤?我还是安卓新手。

更新:

我忘了说我有三个不同的微调器,这取决于用户在第一个活动中喜欢哪个按钮,所以我认为这是因为我只声明了微调器的项目,但没有声明哪个微调器是“日本”指的。

所以这是我的第一个活动的代码,我只会把一个放在第一位:

btnAsia.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(),MainActivity2.class);
            intent.putExtra("continent", "asia");
            startActivity(intent);
        }
    });

这是strings.xml中的字符串数组:

<string-array name="asia">
    <item>Japan</item>
    <item>Thailand</item>
    <item>Vietnam</item>
    <item>South Korea</item>
</string-array>

这是第二个活动中的代码:

private void DestinationSpinner()
{
    Bundle bundle=getIntent().getExtras();
    if(bundle!=null) {
        String continent = bundle.getString("continent");
        switch (continent) {
            case "asia":
                ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(MainActivity2.this, R.array.asia, android.R.layout.simple_spinner_item);  // Create an ArrayAdapter using the string array and a default spinner layout
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Specify the layout to use when the list of choices appears
                spinnerDestination.setAdapter(adapter); // Apply the adapter to the spinner
                break;  }

最后这是从微调器中检索所选项目的代码:

public void AvailableAirlines()
{
    spinnerDestination.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String selected=spinnerDestination.getItemAtPosition(position).toString();

            if (continent.equals("asia") && selected.equals("Japan"))
            {
                availableAirlines.setText("Available airports");
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
}

而且我还想将 keyidentifer 从第一个活动传递到第二个活动,但我尝试使用 getExtras 并且它不起作用,也许我做错了或什么。

【问题讨论】:

    标签: java android android-spinner


    【解决方案1】:

    我认为问题出在这一行if(selected=="Japan")

    在 Java 中,您需要使用 equals 而不是 == 运算符。

    == 检查两个指针​​是否指向同一个内存位置。 Equals 会比较他们的内容。

    【讨论】:

    • if(selected.equals("Japan")) 也是这样吗?我刚才试过改了,还是不行。
    • 你调试过,看看onItemSelected中selected的值是多少?
    • 你能再回顾一下我刚刚更新的问题吗?谢谢sss
    • 我的问题仍然是当那个监听器被调用时selected 的值是多少?如果它仍然不起作用,可能是因为该值不是您所期望的......例如它可以在 UI 上显示日本,但 getItemAtPosition(position).toString() 可能是值的类型(例如 String等)而不是“日本”
    【解决方案2】:

    假设您的Spinner 被命名为spinnerDestination,并且它包含以下选项之一:“日本”。

    要查找和比较“日本”在 Spinner 中的位置,请使用:

    String compareValue = "Japan";
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.asia, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerDestination.setAdapter(adapter);
    if (compareValue != null) {
        int spinnerPosition = adapter.getPosition(compareValue);
        spinnerDestination.setSelection(spinnerPosition);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多