获取微调器选择的项目并传递数据
Get spinner selected item and passing data
我想做的是根据用户选择的微调项设置文本。但是当 运行 应用程序时没有任何显示,也没有错误。我是否错过了导致结果没有出来的任何步骤?我还是 android 的新手。
更新:
我忘了说我有三个不同的微调器,具体取决于第一个用户喜欢哪个按钮 activity 所以我认为这是因为我只声明微调器的项目但没有声明哪个微调器是“日本” " 指的是.
所以这是我第一个 activity 的代码,我只会把一个放在第一位:
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>
这是第二个 activity:
中的代码
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 从第一个 activity 传递到第二个 activity 但我尝试使用 getExtras 但它没有用,也许我做错了或者什么。
我认为问题出在这一行 if(selected=="Japan")
在 Java 中,您需要使用 equals
而不是 ==
运算符。
==
检查两个指针是否指向同一个内存位置。
Equals
将比较他们的内容。
假设您的 Spinner
被命名为 spinnerDestination
,并且其中包含一个选项:“日本”。
要查找和比较“日本”在微调器中的位置,请使用:
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);
}
我想做的是根据用户选择的微调项设置文本。但是当 运行 应用程序时没有任何显示,也没有错误。我是否错过了导致结果没有出来的任何步骤?我还是 android 的新手。
更新:
我忘了说我有三个不同的微调器,具体取决于第一个用户喜欢哪个按钮 activity 所以我认为这是因为我只声明微调器的项目但没有声明哪个微调器是“日本” " 指的是.
所以这是我第一个 activity 的代码,我只会把一个放在第一位:
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>
这是第二个 activity:
中的代码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 从第一个 activity 传递到第二个 activity 但我尝试使用 getExtras 但它没有用,也许我做错了或者什么。
我认为问题出在这一行 if(selected=="Japan")
在 Java 中,您需要使用 equals
而不是 ==
运算符。
==
检查两个指针是否指向同一个内存位置。
Equals
将比较他们的内容。
假设您的 Spinner
被命名为 spinnerDestination
,并且其中包含一个选项:“日本”。
要查找和比较“日本”在微调器中的位置,请使用:
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);
}