在活动之间传递微调器选择
Passing spinner selection between activities
我有 4 个 activity 每个 activity 里面都有旋转器,这个旋转器包括 3 个
字符串数据(下拉选择),当我从 activity 传递到另一个时,我必须将这个选定的数据传递到微调器中,就像我从微调器的列表中选择数据 x 并单击按钮一样,所选数据必须也作为 x 在第二个 activity 微调器中。
我看了几个解决方案都没有解决。我希望在这里解决它,这是我的微调器代码以及放置意图代码的位置
public class Page1 extends AppCompatActivity {
Spinner spinner;
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page1);
spinner = (Spinner)findViewById(R.id.spinner);
adapter = ArrayAdapter.createFromResource(this,R.array.film_type,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_LONG).show();
switch (position)
{case 0:
btn[0] = (FloatingTextButton) findViewById(R.id.btn);
btn[0].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
double thick = Double.valueOf(editText1.getText().toString());
double width = Double.valueOf(editText2.getText().toString());
}
});
break;
case 1:
btn[0] = (FloatingTextButton) findViewById(R.id.btn);
btn[0].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
} catch (NumberFormatException e) {
//not a double
}
}
});
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
你可以这样做
String selectedItem=spinner1.getSelectedItem().toString();
而且 String
你可以使用 Intent
这是我能想到的最无痛的方法:
创建一个新的 class 或现有 class 的静态成员,但第二种解决方案使代码更难理解。
public class SpinnerPosHolder{
public static int poition;
}
然后在所有 4 个中:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
SpinnerPosHolder.position = spinner.getSelectedItemPosition();
使用方法:
spinner.setSelection(SpinnerPosHolder.position)
首先将微调器中选定数据的位置保存在一个字符串变量中,
int positionOfSelectedDataFromSpinner;
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
positionOfSelectedDataFromSpinner= position;
}
然后在 button
上单击将意图发送给另一个 activity 和 putExtra
Intent i = new Intent (this, activity2.class);
i.putExtra("position", positionOfSelectedDataFromSpinner);
startActivity(i);
从另一个 activity
中的 getIntent
获取整数
Intent intent = getIntent();
int positionToShowToSpinner = intent.getStringExtra("position");
然后将位置设置为旋转器
spinner.setSelection(positionToShowToSpinner);
我想这可以解决你的问题。
我有 4 个 activity 每个 activity 里面都有旋转器,这个旋转器包括 3 个 字符串数据(下拉选择),当我从 activity 传递到另一个时,我必须将这个选定的数据传递到微调器中,就像我从微调器的列表中选择数据 x 并单击按钮一样,所选数据必须也作为 x 在第二个 activity 微调器中。 我看了几个解决方案都没有解决。我希望在这里解决它,这是我的微调器代码以及放置意图代码的位置
public class Page1 extends AppCompatActivity {
Spinner spinner;
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page1);
spinner = (Spinner)findViewById(R.id.spinner);
adapter = ArrayAdapter.createFromResource(this,R.array.film_type,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_LONG).show();
switch (position)
{case 0:
btn[0] = (FloatingTextButton) findViewById(R.id.btn);
btn[0].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
double thick = Double.valueOf(editText1.getText().toString());
double width = Double.valueOf(editText2.getText().toString());
}
});
break;
case 1:
btn[0] = (FloatingTextButton) findViewById(R.id.btn);
btn[0].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
} catch (NumberFormatException e) {
//not a double
}
}
});
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
你可以这样做
String selectedItem=spinner1.getSelectedItem().toString();
而且 String
你可以使用 Intent
这是我能想到的最无痛的方法: 创建一个新的 class 或现有 class 的静态成员,但第二种解决方案使代码更难理解。
public class SpinnerPosHolder{
public static int poition;
}
然后在所有 4 个中:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
SpinnerPosHolder.position = spinner.getSelectedItemPosition();
使用方法:
spinner.setSelection(SpinnerPosHolder.position)
首先将微调器中选定数据的位置保存在一个字符串变量中,
int positionOfSelectedDataFromSpinner;
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
positionOfSelectedDataFromSpinner= position;
}
然后在 button
上单击将意图发送给另一个 activity 和 putExtra
Intent i = new Intent (this, activity2.class);
i.putExtra("position", positionOfSelectedDataFromSpinner);
startActivity(i);
从另一个 activity
中的getIntent
获取整数
Intent intent = getIntent();
int positionToShowToSpinner = intent.getStringExtra("position");
然后将位置设置为旋转器
spinner.setSelection(positionToShowToSpinner);
我想这可以解决你的问题。