获取微调器选定项目并传递数据
Posted
技术标签:
【中文标题】获取微调器选定项目并传递数据【英文标题】: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 并且它不起作用,也许我做错了或什么。
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于获取微调器选定项目并传递数据的主要内容,如果未能解决你的问题,请参考以下文章