我有两个这样的String Arrays,
String[] htmlArray = {
"file:///android_asset/Pinocchio/OPS/chapter-001.xml",
"file:///android_asset/Pinocchio/OPS/chapter-002.xml",
"file:///android_asset/Pinocchio/OPS/chapter-035.xml",
"file:///android_asset/Pinocchio/OPS/chapter-035.xml"
};
String[] htmlArray1 = {
"file:///android_asset/Harry_Potter/OEBPS/part1.xhtml",
"file:///android_asset/Harry_Potter/OEBPS/part2_split_000.xhtml",
"file:///android_asset/Harry_Potter/OEBPS/part18_split_000.xhtml",
"file:///android_asset/Harry_Potter/OEBPS/part18_split_001.xhtml",
};
然后,我将两个ImageView放在另一个类中,
private void init() {
pino_cover = (ImageView) findViewById(R.id.pino_cover);
pino_cover.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent reader=new Intent(instance,ReaderScreen.class);
reader.putExtra("pino",true);
startActivity(reader);
}
});
harry_cover=(ImageView) findViewById(R.id.harry_cover);
harry_cover.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent reader=new Intent(instance,ReaderScreen.class);
reader.putExtra("harry",true);
startActivity(reader);
}
});
}
然后,如果我点击Pino图像,我可以通过htmlArray获取数据。
Intent i=getIntent();
Bundle b = i.getExtras();
String newText = b.
String setext=b.getString("harry");
if (newText=="pino")
pages = htmlArray;
else
pages = htmlArray1;
但如果我点击Harry图像,那么它也会通过htmlArray
获取数据。我想得到htmlArray1
。
我怎么能得到?
答案 0 :(得分:5)
你只为你的意图添加一个布尔值,但你可以使用.putExtra(mStringArray, htmlArray1);
,因为这个方法存在通过意图传递数组......?
另外,为了比较java中的两个字符串,你不能==
而是.equals("")
。在您的情况下if(newText.equals("harry))
...
修改强> 好的,在一个更简单的版本中,你有:
Intent i=getIntent();
Bundle b = i.getExtras();
String newText = b.
String setext=b.getString("harry");
if (newText=="pino")
pages = htmlArray;
else
pages = htmlArray1;
替换它:
Intent i=getIntent();
Bundle b = i.getExtras();
String newText = b.
String setext=b.getString("harry");
if (newText.equals("pino"))
pages = htmlArray;
else
pages = htmlArray1;
这应该在逻辑上有用。
答案 1 :(得分:2)
我认为错误在于您使用“==”来比较上面提到的2个字符串。 请使用str1.equals(str2)而不是str1 == str2。
Sephy的回答建议你将2个html数组传递给被调用的活动。如果由于某些原因,被调用的活动仍然可以访问2个阵列,那么你可以像你一样做。
此外,在你传递的地图中,如果你使用2个不同的键(一个是“哈利”,一个是“pino”),它似乎打败了目的。我建议像:
关于哈里事件: i.putExtra(“data”,harry_html_array)
关于pino事件: i.putExtra(“data”,pino_html_array)
在被叫活动中: array = extras.getStringArray(“data”);