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。
有什么解决办法吗
我试过的
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…..然后您可以使用本地广播管理器或事件总线,将所需的数据和信息与之一起传递,并执行所需的方法。结帐这个谢谢!希望你有一个愉快的一天:但第二个活动不是来自主活动。所以我不能用你的解决方案。这是我的错,因为我描述的情况不够多。。。谢谢你回答我。:)