我的主要目标是点击Activity1
中的按钮,然后WebView
的{{1}}从本地的html文件中加载页面。
仅仅为了测试目的,我只使用1个按钮,但我个人会有超过1个按钮,每个按钮将导航到不同的页面。
以下是Activity2
中打开Activity1
Activity2
这就是我想在Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
加载
Activity2
我可以用1个按钮做到这一点吗?但是当我想在 setContentView(R.layout.activity_main);
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/index.html");
view.setBackgroundColor(Color.TRANSPARENT);
setContentView(view);
中使用不同的按钮时,问题出现了,不同的页面说index.html2或index.html3。有人可以帮帮我吗?
感谢。
答案 0 :(得分:1)
你应该考虑一下你的问题。
你在Activity1中有一个按钮。 单击该按钮可启动Activity2并执行某些特定操作(如打开index1.html)。
现在您想为Activity1添加更多按钮。
每个按钮也应打开Activity2。但每个按钮应该做一些特定的事情(比如打开“index1.html”,“index2.html”或“index3.html”)。
那么你的问题是什么? 你不知道怎么告诉Activity2点击了哪个Button,所以 Activity2不知道打开哪个“index.html”。
现在,让我告诉您如何操作:
您已经使用此代码启动Activity2:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
但是Intent
可以比开始Activity
做更多的事情!
您可以将数据添加到intent-object,稍后再将其恢复。
通过执行以下操作向您的意图添加数据:
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("htmlToOpen", "index1.html"); //Here you put your info
startActivity(intent);
现在,在您的Activty2中,您必须取回数据:
String fileName = getIntent().getStringExtra("htmlToOpen");
现在您可以使用String fileName打开所需的html文件:
setContentView(R.layout.activity_main);
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/" + fileName);
view.setBackgroundColor(Color.TRANSPARENT);
setContentView(view);
要详细了解Intent
,请在此处阅读:Intents and Intent Filters
顺便说一句:我认为您正在尝试执行以下操作:
MainActivity
。MainActivity
中。如果这是您想要做的,请让我建议采用Android方式:
在MainActivity
中,您可以通过以下方式启动Activity1:
Intent i = new Intent(this, Activity1.class);
startActivityForResult(i, 1);
该代码意味着您只是为了获得结果而启动您的Activity1(在这种情况下,结果是所需的网站)。
现在,在您的Activity1中,您可以通过以下方式返回结果(所需的网站):
Intent returnIntent = new Intent();
returnIntent.putExtra("htmlToOpen","index1.html"); //if another button was clicked, put another filename, here.
setResult(RESULT_OK,returnIntent);
finish();
现在,再次回到MainActivity
,您可以通过添加以下功能获得结果:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String fileName = data.getStringExtra("htmlToOpen");
//Now open your desired website by using the String fileName,
//which contains the String "index1.html"
}
}
}
如果您想了解有关启动结果活动的更多信息,请阅读:
答案 1 :(得分:0)
这样做:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_1:
Intent i = new Intent(this,MainActivity.this);
i.putExtra("page","file:///android_asset/index1.html");
startActivity(i);
break;
case R.id.btn_2:
Intent i = new Intent(this,MainActivity.this);
i.putExtra("page","file:///android_asset/index2.html");
startActivity(i);
break;
case R.id.btn_3:
Intent i = new Intent(this,MainActivity.this);
i.putExtra("page","file:///android_asset/index3.html");
startActivity(i);
break;
}
}
以及您的其他活动onCreate
:
setContentView(R.layout.activity_main);
String pageString = getIntent().getExtras().getString("page");
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl(pageString);
view.setBackgroundColor(Color.TRANSPARENT);
setContentView(view);`