我正在开发简单的android项目,需要android studio中的微调器小部件。我想要做的是,当用户从微调器中选择选项时,它将打开另一个活动。而我正处于编码的中间。我决定在Intent中使用switch case条件。问题是每当我运行应用程序时,它将自动转到我声明的特定活动位置。即使我没有在微调器上选择任何选择。 注意:log cat没有显示任何错误
对于像我这样的初学者,非常感谢你的帮助。
public class CustomOnItemSelectedListener extends Activity implements
OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
// **************************** below here is where I start the new activity
switch (pos) {
case 0 :
Intent i = new Intent(app.this, home.class);
app.this.startActivity(i);
break;
case 1 :
//Intent intent = new Intent(app.this, about.class);
//app.this.startActivity(intent);
break;
case 2 :
//Intent intent1 = new Intent(app.this, home.class);
//app.this.startActivity(intent1);
break;
}
// **************************** above here is where I start the new activity
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:1)
试试这个
在您的班级中声明一个int,例如在onCreate()
之前,然后在onCreate()
中将其指定为0.使用此变量检查在使用微调器选择内容时是否大于0,如下所示。
public class ExampleActivity extends AppCompatActivity {
private int spinnerCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSpinnerCheck = 0;
mMySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int itemId = (int) id;
// For some reason this method is called during initialization, so increment counter once to prevent it from auto selecting first item when loading view
spinnerCheck += 1;
if (spinnerCheck > 1) {
switch (pos) {
case 0:
Intent i = new Intent(app.this, home.class);
app.this.startActivity(i);
break;
case 1:
//Intent intent = new Intent(app.this, about.class);
//app.this.startActivity(intent);
break;
case 2:
//Intent intent1 = new Intent(app.this, home.class);
//app.this.startActivity(intent1);
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
出于某种原因,它选择了第一个项目,但不确定原因,但这应该有效。
答案 1 :(得分:0)
默认情况下创建应用程序时,会在您的微调器中选择第一个选项,并调用您的侦听器。为避免这种情况,您可以使用@Simon
的解决方案或者您可以使用按钮确认您的选择并在按下此按钮时更改您的活动,而不是在您的微调器中选择项目时。
<强>更新强> 您还可以使用无用的文本填充您的微调器的第一个条目,该文本可以是&#34;选择活动&#34;并在侦听器中将您的开关设置为1而不是0