简单封装Intent实现Activity简单巧妙跳转

  假如这里有一个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");

猜你喜欢

转载自blog.csdn.net/c1024197824/article/details/89642277
今日推荐