Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有从其他活动类访问MainActivity的解决方案?_Java_Android - Fatal编程技术网

Java 是否有从其他活动类访问MainActivity的解决方案?

Java 是否有从其他活动类访问MainActivity的解决方案?,java,android,Java,Android,我想调用下面的函数 mobileView.loadUrl("javascript:setUserId () "); 而mobileView正处于主要活动中 public class MainActivity extends AppCompatActivity { private WebView mobileView; } 我想在第二个活动完成后调用上面的函数 public class SecondActivity extends AppCompatActivity { ...

我想调用下面的函数

mobileView.loadUrl("javascript:setUserId () ");
而mobileView正处于主要活动中

public class MainActivity extends AppCompatActivity {
    private WebView mobileView;
}
我想在第二个活动完成后调用上面的函数

public class SecondActivity extends AppCompatActivity {
    ...
    private void getUserId () {
        ...
        finish();
    }
}
第二个活动从一个接收器开始

public class AReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        ...
        Intent i = new Intent(context, SecondActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ...
        context.startActivity(i);
    }
}
下面的代码调用了一个接收器

class MainActivity {
    ...
    private void userId () {
        ...
        intent = new Intent(MainActivity.this, AReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(
                MainActivity.this, 
                alarmID, 
                intent, 
                PendingIntent.FLAG_UPDATE_CURRENT
        );
        alarmManager.set(
                AlarmManager.RTC_WAKEUP, 
                mCalendar.getTimeInMillis(), 
                pendingIntent
        );
        ...
    }
    ...
}
但我不知道如何从SecondActivity访问mobileView。 有什么解决办法吗


我试过的

  • 将变量从
  • 二,。 使用从SecondActivity调用

    MainActivity.mobileView
    

    这对我不起作用

    您可以尝试此选项

    意图

    您使用startActivityForResult从另一个活动打开了新活动。在这种情况下,您只需从代码中调用finishActivity()函数,它就会将您带回上一个活动


    只有当您从主活动开始第二个活动时,它才起作用。

    我使用本地广播经理解决了这个问题!:D 感谢@Shripad Jadhav帮助回答这个问题

    下面的描述是解决方案!希望它能帮助别人D


    MainActivity.java

    public class MainActivity extends AppCompatActivity {
        private WebView wv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            LocalBroadcastManager.getInstance(this)
                .registerReceiver(mBroadcastReceiver, new IntentFilter("webview-filter"));
            ...
        }
        ...
        private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                mv.loadUrl("javascript: loadMainData ()");
            }
        };
        @Override
        protected void onDestroy() {
            LocalBroadcastManager.getInstance(this).unregisterReceiver(mBroadcastReceiver);
            super.onDestroy();
        }
    }
    
    public class SecondActivity extends AppCompatActivity {
        private void someFunction () {
            sendMessage ();
        }
        ...
        private void sendMessage() {
            Log.d("sender", "Broadcasting message");
            Intent intent = new Intent("webview-filter");
    
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
        }
        ...
    }
    
    SecondActivity.java

    public class MainActivity extends AppCompatActivity {
        private WebView wv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            LocalBroadcastManager.getInstance(this)
                .registerReceiver(mBroadcastReceiver, new IntentFilter("webview-filter"));
            ...
        }
        ...
        private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                mv.loadUrl("javascript: loadMainData ()");
            }
        };
        @Override
        protected void onDestroy() {
            LocalBroadcastManager.getInstance(this).unregisterReceiver(mBroadcastReceiver);
            super.onDestroy();
        }
    }
    
    public class SecondActivity extends AppCompatActivity {
        private void someFunction () {
            sendMessage ();
        }
        ...
        private void sendMessage() {
            Log.d("sender", "Broadcasting message");
            Intent intent = new Intent("webview-filter");
    
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
        }
        ...
    }
    

    如果您从MainActivity启动SecondActivity,这可能会有所帮助否我从另一个接收器启动SecondActivity extends BroadcastReceiver…..然后您可以使用本地广播管理器或事件总线,将所需的数据和信息与之一起传递,并执行所需的方法。结帐这个谢谢!希望你有一个愉快的一天:但第二个活动不是来自主活动。所以我不能用你的解决方案。这是我的错,因为我描述的情况不够多。。。谢谢你回答我。:)