为多个微调器分别创建一个方法——如何将这些数据传递给新的活动?
Made a method each for multiple Spinners - how to pass this data on to new activities?
这听起来可能有点令人费解。
我在一个 activity 中大约有 15 个微调器,并为每个微调器制作了不同的方法。然后我在 onCreate 方法中启动方法。
方法示例:
//Relative Position Spinner
public void relativePositionSpinner() {
Spinner relativePositionSpinner = (Spinner) findViewById(R.id.spinner_relativePosition);
ArrayAdapter relativePositionAdapter = ArrayAdapter.createFromResource(this, R.array.relativePosition, R.layout.spinner_item);
relativePositionSpinner.setAdapter(relativePositionAdapter);
//what happens when selected
relativePositionSpinner.setOnItemSelectedListener(this);
}
OnCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_hand);
//initiate all Spinners
relativePositionSpinner();
absolutePositionSpinner();
etc.
现在我想要的是通过单击按钮将每个 Spinner 的数据发送到另一个 Activity。我知道我可以有意地做到这一点,并在 Button 方法中使用 putExtra,如下所示:
public void openHandSummary() {
//Find the Button that gives option to enter new hand
Button handInputButton = (Button) findViewById(R.id.hand_input_button);
//set a click listener on Hand Analyzer Button
handInputButton.setOnClickListener(new View.OnClickListener() {
//below code will be executed when the new Hand Button is clicked
@Override
public void onClick(View view) {
Intent handSummaryIntent = new Intent(NewHandActivity.this, HandSummaryActivity.class);
handSummaryIntent.putExtra("RelPosString", WHATTOENTERHERE??)
startActivity(handSummaryIntent);
}
});
}
但是我不知道如何从我的微调器中检索 value/variable 以将它们放入 Button/intent 方法中?因为如果我在 Spinner 方法中创建一个 String,那么我就无法在 Button 方法中访问它。
所以我觉得我的方法太多了?那么有没有一种方法可以将数据从一种方法传递到另一种方法,或者我是否必须取消某些方法?设置它的最简单方法是什么?
我还制作了一个 onItemSelected 来祝酒,效果很好。我可以使用 OnItemSelected 以某种方式创建变量或启动数据传输到另一个 Activity 吗?
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView myText = (TextView) view;
switch (parent.getId()) {
case R.id.spinner_relativePosition:
makeText(NewHandActivity.this, "Relative Position is " + myText.getText(), Toast.LENGTH_SHORT).show();
break;
case R.id.spinner_absolutePosition:
makeText(NewHandActivity.this, "Absolute Position is " + myText.getText(), Toast.LENGTH_SHORT).show();
break;
我是编码的新手,我只是想不通如何让 Spinner 方法、Button/iniate 方法和 OnItemSelected 方法协同工作并交换变量的逻辑。如果有人能指出我正确的方向,我将不胜感激。已经浏览了一天左右的互联网来寻找答案,但没有成功。
我喜欢您将代码分离出来以将每个微调器创建到其自己的方法中的想法。但是,如果您正在复制和粘贴整个方法并进行一些更改,您应该退后一步,想想如何才能更轻松地做到这一点。通常,您在复制和粘贴后所做的更改会提示您应该向该方法添加一些参数。如果操作正确,您可以只编写一个方法,然后复制并粘贴方法 call 而不是整个方法,然后对参数进行适当的更改。
至于你的实际问题,你把它弄得比必要的复杂得多。具体来说,您不需要对任何 Spinner
进行 setOnItemSelectedListener()
。相反,按钮的 OnClickListener
应该只从每个微调器中获取所选项目并将其发送到 Intent 中的新 activity。
这听起来可能有点令人费解。 我在一个 activity 中大约有 15 个微调器,并为每个微调器制作了不同的方法。然后我在 onCreate 方法中启动方法。
方法示例:
//Relative Position Spinner
public void relativePositionSpinner() {
Spinner relativePositionSpinner = (Spinner) findViewById(R.id.spinner_relativePosition);
ArrayAdapter relativePositionAdapter = ArrayAdapter.createFromResource(this, R.array.relativePosition, R.layout.spinner_item);
relativePositionSpinner.setAdapter(relativePositionAdapter);
//what happens when selected
relativePositionSpinner.setOnItemSelectedListener(this);
}
OnCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_hand);
//initiate all Spinners
relativePositionSpinner();
absolutePositionSpinner();
etc.
现在我想要的是通过单击按钮将每个 Spinner 的数据发送到另一个 Activity。我知道我可以有意地做到这一点,并在 Button 方法中使用 putExtra,如下所示:
public void openHandSummary() {
//Find the Button that gives option to enter new hand
Button handInputButton = (Button) findViewById(R.id.hand_input_button);
//set a click listener on Hand Analyzer Button
handInputButton.setOnClickListener(new View.OnClickListener() {
//below code will be executed when the new Hand Button is clicked
@Override
public void onClick(View view) {
Intent handSummaryIntent = new Intent(NewHandActivity.this, HandSummaryActivity.class);
handSummaryIntent.putExtra("RelPosString", WHATTOENTERHERE??)
startActivity(handSummaryIntent);
}
});
}
但是我不知道如何从我的微调器中检索 value/variable 以将它们放入 Button/intent 方法中?因为如果我在 Spinner 方法中创建一个 String,那么我就无法在 Button 方法中访问它。
所以我觉得我的方法太多了?那么有没有一种方法可以将数据从一种方法传递到另一种方法,或者我是否必须取消某些方法?设置它的最简单方法是什么?
我还制作了一个 onItemSelected 来祝酒,效果很好。我可以使用 OnItemSelected 以某种方式创建变量或启动数据传输到另一个 Activity 吗?
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView myText = (TextView) view;
switch (parent.getId()) {
case R.id.spinner_relativePosition:
makeText(NewHandActivity.this, "Relative Position is " + myText.getText(), Toast.LENGTH_SHORT).show();
break;
case R.id.spinner_absolutePosition:
makeText(NewHandActivity.this, "Absolute Position is " + myText.getText(), Toast.LENGTH_SHORT).show();
break;
我是编码的新手,我只是想不通如何让 Spinner 方法、Button/iniate 方法和 OnItemSelected 方法协同工作并交换变量的逻辑。如果有人能指出我正确的方向,我将不胜感激。已经浏览了一天左右的互联网来寻找答案,但没有成功。
我喜欢您将代码分离出来以将每个微调器创建到其自己的方法中的想法。但是,如果您正在复制和粘贴整个方法并进行一些更改,您应该退后一步,想想如何才能更轻松地做到这一点。通常,您在复制和粘贴后所做的更改会提示您应该向该方法添加一些参数。如果操作正确,您可以只编写一个方法,然后复制并粘贴方法 call 而不是整个方法,然后对参数进行适当的更改。
至于你的实际问题,你把它弄得比必要的复杂得多。具体来说,您不需要对任何 Spinner
进行 setOnItemSelectedListener()
。相反,按钮的 OnClickListener
应该只从每个微调器中获取所选项目并将其发送到 Intent 中的新 activity。