Android Studio - 在活动之间切换 - findViewById 为空



>我在基本活动中有一个抽屉布局。我的所有活动都继承自此基本活动。

我有两个活动。主活动活动2

只要我在主活动中,我的网络视图也在,一切都很好。

但是当我在活动2上时

WebView myWebView = (WebView) findViewById(R.id.webview);

myWebView 为空。

那么我怎样才能回到主活动然后在我在活动 2 上时设置并 URL 到我的网络视图?

当我尝试这个并且我在活动 2 中

WebView myWebView = (WebView) findViewById(R.id.webview);
        if(myWebView == null) {
          Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
myWebView = (WebView) findViewById(R.id.webview);
//myWebView IS STILL NULL!!

所以我希望你明白我的问题是什么。

WebView 位于 MainActivity 上。如果我在活动 2 上,我想回到主活动,然后设置 Web 视图的网址

我尝试了很多东西,比如onBackPressed((; or finish(( ....

但什么都不适合我

多谢

当您在 Activity2 中时,您无法获取对在 MainActivity 中声明的 Web 视图的引用。 如果 Activity2 需要自己的 Web 视图,则必须在设置布局膨胀器时指向的自己的布局 xml 文件中声明 Web 视图。 如果 Activity2 需要将一些信息(如 URL(传递回 MainActivity,它将在返回到 MainActivity 之前在 Intent 中执行此操作。 这将要求 MainActivity 使用 startActivityForResult((。

在主活动中.java

            Intent iIntent = new Intent(thisContext, TripActivity.class);
            TripItem trip = new TripItem(0, 0, employeeID);
            iIntent.putExtra("trip", trip);
            startActivityForResult(iIntent, ACTIVITY_TRIP);
    .....
    public void onActivityResult(int requestCode, int resultCode, Intent returnedIntent) { 
    super.onActivityResult(requestCode, resultCode, returnedIntent); 
    switch(requestCode) { 
    case ACTIVITY_TRIP:
        if (resultCode == android.app.Activity.RESULT_OK){  
            String url = returnedIntent.getStringExtra("my_url", false);
            myWebview.loadUrl(url);
        } 
        break;
    ...

在活动 2 中

                //Some click event in Action2
                public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
                Intent intent = new Intent();
                //Pass information back to MainActivity
                intent.putExtra("my_url", url); 
                //Tell MainActivity everything worked OK in Activity2
                setResult(RESULT_OK, intent);
                //End Activity2
                finish();
            }

最新更新