假如这里有一个Activity,里面包含了一个网页WebView控件,当需要显示一个网页的时候,会传进去一个url链接实现网页的加载显示。
示例代码如下:
// 承载网页的Activity代码
public class WebViewActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(this, R.layout.activity_webview);
String url = getIntent().getStringExtra("url"); // 接收传进来的网页链接
String title = getIntent().getStringExtra("title"); // 接收传进来的网页标题
WebView webView = findViewById(R.id.webView); // 获取WebView控件
webView.loadUrl(url); // 加载url
TextView tvTitle = findViewById(R.id.tv_title);
tvTitle.setText(title); // 设置网页标题
// 剩余代码略…………
}
}
当其他页面想要加载网页跳转到WebViewActivity的时候,代码如下:
Intent data = new Intent(this, WebViewActivity.class);
data.putExtra("url", "https://blog.csdn.net/c1024197824");
data.putExtra("title", "我的CSDN");
startActivity(data);
这里有个问题,如果多个页面都要跳转加载网页Activity时,那岂不是每个地方都要写上面那几行跳转代码,完全是在写重复的样板代码,其他的Activity跳转也会遇到相同问题。
我们可以将这几行代码封装到跳转目标Activity中,Activity中的其他代码都不需要改动,只需增加几行代码即可,在本例中就是封装到WebViewActivity,代码如下:
public class WebViewActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
代码略…………
}
/**
* 新增代码
* @param context 上一个Activity的上下文对象
* @param url 参数1 url
* @param title 参数2 标题
*/
public static void intentFor(Context context, String url, String title) {
Intent data = new Intent(context, WebViewActivity.class);
data.putExtra("url", url);
data.putExtra("title", title);
context.startActivity(data);
}
}
调用方法:
// 一行代码即可跳转目标Activity,注意this是Activity上下文对象
WebViewActivity.intentFor(this, "https://blog.csdn.net/c1024197824", "我的CSDN");