我尝试过谷歌搜索,但无法得到针对我的问题的答案。
我正在尝试在单击项目时启动活动。代码如下:
public class ListOfCircuits extends Activity
{
String[] raceTrackList;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.list_of_circuits);
raceTrackList = getResources().getStringArray(R.array.tracklist_array);
Spinner s1 = (Spinner) findViewById(R.id.circuitListSpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, raceTrackList);
s1.setAdapter(adapter);
s1.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3)
{
int index = arg0.getSelectedItemPosition();
Toast.makeText(getBaseContext(),
"You have selected: " + raceTrackList[index],
Toast.LENGTH_SHORT).show();
String intentString;
String circuitChosen = raceTrackList[index].toString();
intentString = ("net.learn2develop." + circuitChosen);
startActivity(new Intent(intentString));
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
}
});
}
然而,此刻它直接加载到列表顶部的活动(TopGear)。你如何解决这个问题,以便用户可以看到列表并选择它,即不立即启动意图 - 使用if语句?
感谢。
答案 0 :(得分:0)
这是因为该方法是在Activity
第一次加载时调用的。 应是处理此问题的更好方法,但您只需设置boolean
标记
public class ListOfCircuits extends Activity
{
String[] raceTrackList;
boolean go = false;
@Override
protected void onCreate(Bundle savedInstanceState)
{
然后在第一次调用它时将其设置为true并在那里检查
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3)
{
if (go)
{
// your code
intentString = ("net.learn2develop." + circuitChosen);
startActivity(new Intent(intentString));
}
else
{ go = true; }
}
答案 1 :(得分:0)
我的回答是:
添加布尔值作为codeMagic建议并将我的数组修改为:
<string-array name="tracklist_array">
<item>Choose from below:</item>
<item>TopGear</item>
<item>Snetterton</item>
<item>Silverstone</item>
<item>Donnington</item>
</string-array>
这
<string-array name="tracklist_array">
<item>TopGear</item>
<item>Snetterton</item>
<item>Silverstone</item>
<item>Donnington</item>
</string-array>
最终代码是针对Java的 - 见下文。 再次感谢。
答案 2 :(得分:0)
CodeMagic认为我现在让它像老板一样工作:
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3)
{
if(go)
{
int index = arg0.getSelectedItemPosition();
if(index == 0)
{
Toast.makeText(getBaseContext(),
"Please select a race crcuit.",
Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getBaseContext(),
"You have selected: " + raceTrackList[index],
Toast.LENGTH_SHORT).show();
String intentString;
String circuitChosen = raceTrackList[index].toString();
intentString = ("net.learn2develop." + circuitChosen);
startActivity(new Intent(intentString));
}
}
else
{
go = true;
}
}
我只加载我想要的Intents(竞赛电路),如果用户选择“从下面选择:”,只会显示一个相关的Toast。
感谢。