android studio从activity1单击button1以加载activity2 webview

时间:2015-06-11 10:08:13

标签: android android-layout android-activity

我的主要目标是点击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。有人可以帮帮我吗?

感谢。

2 个答案:

答案 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

顺便说一句:我认为您正在尝试执行以下操作:

  1. 您可以在MainActivity
  2. 中启动应用
  3. 你有一个按钮。用户可以单击按钮打开Activity1。
  4. 在Activity1中,用户可以选择一个网站(html文件)。
  5. 该网站现在应显示在MainActivity中。
  6. 如果这是您想要做的,请让我建议采用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);`