也许你会发现我要求过于主流/基本的问题。但我需要帮助,也许我是新手。 基本上我正在制作一个简单的应用程序,以离线方式显示一些旅游景点的地图。它有三个活动。 A - 可扩展列表 B - 使用webview显示地图的活动 C - 承载活动B的TabHost。
每当从活动A中的可扩展列表中单击子项时,它就会发送两个意图。 1)到活动B给出所需地图的位置。 2)到Activity C启动TabHost。 代码如下:
if (childclicked=="Red Fort")
{
Intent toMap = new Intent(TourList.this,Map.class);
toMap.putExtra(ID , "file:///android_asset/redfort.jpg");
Intent i = new Intent(TourList.this,TourTabs.class);
startActivity(i);
}
,活动B中的代码如下:
public class Map extends Activity {
String imageUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
//Using a webview for pinch zooming
WebView vw=(WebView)findViewById(R.id.webView1);
vw.getSettings().setBuiltInZoomControls(true);
//Fetching intents
Intent fromList = getIntent();
imageUrl = fromList.getStringExtra(TourList.ID);
vw.loadUrl(imageUrl);
}
但是错误是运行时。 TabHost中没有显示任何内容。 WebView不显示任何内容。为什么?请帮忙。
答案 0 :(得分:4)
if (childclicked=="Red Fort")
{
Intent toMap = new Intent(TourList.this,Map.class);
toMap.putExtra(ID , "file:///android_asset/redfort.jpg");
Intent i = new Intent(TourList.this,TourTabs.class);
startActivity(i);
}
无法将字符串与java中的==
进行比较。你必须使用equals或equalsIgnoreCase
if (childclicked.equals("Red Fort"))
在if体内创建两个不同的Intent
。在一个你放一个字符串,并使用另一个开始一个Actvity。第一个是没用的
答案 1 :(得分:0)
您已在意图中正确传递了值,但我认为您已经启动了第二个意图的活动,在该活动中您没有传递任何内容,并且您正尝试从尚未通过的活动TourList.ID
访问该值。
尝试如下并尝试运行Map.java
的活动,然后访问该值。
if (childclicked.equals("Red Fort")) { Intent toMap = new Intent(TourList.this,Map.class); toMap.putExtra(ID , "file:///android_asset/redfort.jpg"); startActivity(toMap); Intent i = new Intent(TourList.this,TourTabs.class); startActivity(i); }
也根据我的做法改变if条件。 我希望它会对你有所帮助。