[英]Is there a solution that access MainActivity from other Activity class?
我想在下面打电话给 function。
mobileView.loadUrl("javascript:setUserId () ");
而mobileView在MainActivity中。
public class MainActivity extends AppCompatActivity {
private WebView mobileView;
}
我想在 SecondActivity 完成后调用上面的 function。
public class SecondActivity extends AppCompatActivity {
...
private void getUserId () {
...
finish();
}
}
而 SecondActivity 从 AReceiver 开始。
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);
}
}
AReceiver 由以下代码调用...
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。 有什么解决办法吗?
我试过的...
private webView mobileView
至
public webView mobileView
2.从SecondActivity调用使用
MainActivity.mobileView
它对我不起作用。
你可以试试这个选项
意图
.....................
您使用startActivityForResult从另一个活动中打开了新活动。 在这种情况下,您只需从您的代码中调用finishActivity() function,它就会带您回到上一个活动。
仅当您从主要活动开始第二个活动时,它才有效
我使用本地广播经理解决了这个问题:.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();
}
}
SecondActivity.java
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);
}
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.