Java 如何使用ListView在同一WebView活动中启动不同的URL

Java 如何使用ListView在同一WebView活动中启动不同的URL,java,android,listview,browser,webview,Java,Android,Listview,Browser,Webview,这里没有。我正在学习创建一个简单的android网络浏览器。我面临的问题是,我有一个带有不同网站列表的列表视图,还有一个带有WebView的活动。但是,我只能从此活动启动一个URL。我希望当单击ListView中的另一个项目时,URL被其他网站替换 我不想为每个链接创建新的活动。这是我的密码 MainActivity.java package firstapp.listviewtutorial; import android.content.Intent; import android.os.

这里没有。我正在学习创建一个简单的android网络浏览器。我面临的问题是,我有一个带有不同网站列表的
列表视图
,还有一个带有
WebView的
活动
。但是,我只能从此活动启动一个URL。我希望当单击
ListView
中的另一个项目时,URL被其他网站替换

我不想为每个链接创建新的
活动。这是我的密码

MainActivity.java

package firstapp.listviewtutorial;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    String url = getIntent().getStringExtra("url");
    final String TAG = this.getClass().getName();
    ArrayAdapter<String> adapter;
    ListView listView;
    String[] website_names = {"Google Search","Wikipedia Search", "Youtube Search","World News",
            "Facebook", "Twitter", "Amazon Shopping","About Us","Exit"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = (ListView)findViewById(R.id.menu_item);

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, website_names);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                switch (position){

                    case 0:
                        Intent gs = new Intent(MainActivity.this, WebViewActivity.class);
                        startActivity(gs);
                        break;
                    case 1:
                        break;
                    case 2:
                        break;
                    case 3:
                        break;
                    case 4:
                        break;
                    case 5:
                        break;
                    case 6:
                        break;
                    case 7:
                        Intent about = new Intent(MainActivity.this, AboutDev.class);
                        startActivity(about);
                        break;
                    case 8:
                        System.exit(0);
                        break;
                }


            }
        });
    }

    boolean twice=false;
    @Override
    public void onBackPressed() {

        if(twice == true){

            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
            System.exit(0);

        }
        twice = true;
        Log.d(TAG, "Twice: " +twice);

        // super.onBackPressed();
        Toast.makeText(MainActivity.this, "Press Again to Exit", Toast.LENGTH_SHORT).show();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                twice = false;
                Log.d(TAG, "Twice: " +twice);
            }
        },3000);
    }
}
package firstapp.listviewtutorial;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import static firstapp.listviewtutorial.R.id.webView;

public class WebViewActivity extends AppCompatActivity {

    WebView wb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_google_search);

        wb = (WebView) findViewById(webView);
        wb.setWebViewClient(new WebViewClient());
        WebSettings webSettings = wb.getSettings();
        webSettings.setJavaScriptEnabled(true);
        wb.loadUrl("http://www.google.com");
    }


    @Override
    public void onBackPressed() {
        if (wb.canGoBack()) {
            wb.goBack();
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()){

            case R.id.item_option1:
                wb.reload();
                break;
            case R.id.item_option2:
                Intent home = new Intent(WebViewActivity.this, MainActivity.class);
                startActivity(home);
                break;
            case R.id.item_option3:
                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
                sendIntent.setType("text/plain");
                startActivity(sendIntent);
                break;
            case R.id.item_option4:
Intent about = new Intent(WebViewActivity.this, AboutDev.class);
                startActivity(about);
                break;
            case R.id.item_option5:
                System.exit(0);
                break;

        }

        return super.onOptionsItemSelected(item);
    }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_google_search);

    wb = (WebView) findViewById(webView);
    wb.setWebViewClient(new WebViewClient());
    WebSettings webSettings = wb.getSettings();
    webSettings.setJavaScriptEnabled(true);

    //Retrieve the url that you put into your intent
    String url = getIntent().getStringExtra("URL");
    wb.loadUrl(url);
}

我还需要包括什么吗?谢谢大家。

在这一部分中,您要做什么

case 0:
    Intent gs = new Intent(MainActivity.this, WebViewActivity.class);

    //ADD THIS LINE
    gs.putExtra("URL", "<whatever_url_for_case_0>");

    startActivity(gs);

在这一部分你做什么

case 0:
    Intent gs = new Intent(MainActivity.this, WebViewActivity.class);

    //ADD THIS LINE
    gs.putExtra("URL", "<whatever_url_for_case_0>");

    startActivity(gs);

您需要将url的值从主活动类传递到web活动,并将其作为变量加载到wb.loadUrl(url)中;您需要将url的值从主活动类传递到web活动,并将其作为变量加载到wb.loadUrl(url)中;它不起作用;(添加代码后,我的应用程序没有运行。很遗憾,Giving应用程序已停止工作。错误在哪里?你能检查stacktrace吗?它工作了!!非常感谢:)有一行额外的代码出现错误。它不工作;(添加代码后,我的应用程序没有运行。很遗憾,Giving应用程序已停止工作。错误在哪里?你能检查stacktrace吗?它工作了!!非常感谢:)有一行额外的代码出现了错误。