gpt4 book ai didi

java - 如何使用 ListView 在同一 WebView Activity 中启动不同的 URL

转载 作者:行者123 更新时间:2023-12-02 03:31:34 25 4
gpt4 key购买 nike

这里是菜鸟。我正在学习创建一个简单的 Android 网络浏览器。我面临的问题是我有一个带有不同网站列表的 ListView 和一个带有 WebViewActivity 。但是,我只能从此 Activity 启动一个 URL。我希望在单击 ListView 中的另一个项目时将 URL 替换为其他网站。

我不想为每个链接创建一个新的Activity。这是我的代码。

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);
}
}

WebViewActivity.java

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);
}
}

我还需要添加其他内容吗?谢谢大家。

最佳答案

在这部分你要做

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

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

startActivity(gs);

对所有列表项和网址执行相同的操作。

在WebViewActivity.java

@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);
}

关于java - 如何使用 ListView 在同一 WebView Activity 中启动不同的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com