我正在制作一个测验计划来练习listview的工作方式。
我声明了这些字符串。
final String[] topics= {"History" , "Arts","Civics","Transport","Technology","Science", "Social",
"Architecture", enter code here"Health","Geography","Computers","Business","Celebrities","Sports","Literature", "Music", };
now i use listview to see the list of items i have declared
Lst.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Bundle bundle = new Bundle();
bundle.putStringArray("Bundlekey", topics);
String Topicname = topics[position];
Intent intent = new Intent(QwizActivity.this,secondActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
xml中的listview声明`
<ListView
android:id="@+id/ListVwe"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#388E3C"
android:elevation="2dp"
android:textColor="#FFFFFF" >
</ListView>`
我做了第二个活动,我从第一个活动调用输入并操作我从bundle获得的输入,但我没有获得任何包值。它是null我想比较每个项目,例如我选择历史我想对历史有一个不同的问题,如果我选择 arts 我想要艺术问题。但我无法从第一次活动中检索任何值,我做了一个吐司,而吐司是空的。我使用的方法不正确。我正在寻求一些指导请帮助
我宣布第二项活动的代码。
TextView Qsn ;
TextView TopicTitle ;
Button Ybtn ;
Button Nbtn ;
@Override protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.history);
Qsn = (TextView) findViewById(R.id.Question);
TopicTitle = (TextView)findViewById(R.id.Topictxt);
Ybtn=(Button)findViewById(R.id.Yesbtn);
Nbtn=(Button)findViewById(R.id.Nobtn);
Intent intent = getIntent();
Bundle bundle =intent.getExtras();
String check=bundle.getString("Bundlekey") ;
TopicTitle.setText(check);
Toast.makeText(getApplicationContext(), check, Toast.LENGTH_SHORT) .show();
}
第二个活动的xml
android:id="@+id/Question"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Question"
android:id="@+id/Topictxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="History"
我的问题是为什么&#34; 检查&#34;空的,我如何比较&#34; 检查 &#34;使用&#34; 历史&#34;等值刺痛&#34; arts&#34;这是我的第一个问题所以如果我没有以正确的格式提问,请告诉我。三江源。
答案 0 :(得分:2)
您正在使用OnItemClickListener中的putStringArray创建一个数组,并在下一个Activity中将其作为aString。改为发送Topicname。
String Topicname = topics[position];
bundle.putString("Bundlekey", Topicname);
你也可以制作&#34; Bundlekey&#34;要访问的公共静态变量
答案 1 :(得分:1)
在第二个Activity中获取数据时,必须从Bundle获取String Array。
Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);
然后从此Array获取String值。
答案 2 :(得分:1)
检查你从意图中收到了什么字符串,你可能必须使用for循环来比较数组中的每个值。下面的函数将返回你收到的字符串
String compareValues(您的数组名称,您收到的值) {
String temp;
for(int i=0;i<array.length;i++)
{
if(value.equalsignorecase(array[i]))
temp = array[i];
break;
}
}
return temp;
}