是否存在从其他Activity类访问MainActivity的解决方案?

时间:2019-11-07 07:44:27

标签: java android

我想在下面调用函数。

mobileView.loadUrl("javascript:setUserId () ");

mobileView在MainActivity中。

public class MainActivity extends AppCompatActivity {
    private WebView mobileView;
}

我想在SecondActivity完成之后调用上面的函数。

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。 有什么解决办法吗?


我尝试过的...

  1. 更改变量
private webView mobileView 

public webView mobileView

2。 使用

从SecondActivity调用
MainActivity.mobileView

这对我不起作用。

2 个答案:

答案 0 :(得分:1)

您可以尝试此选项

意图

..............

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

仅当您从主要活动开始第二个活动时,该功能才起作用

答案 1 :(得分:0)

我使用当地的广泛演员经理解决了这个问题! :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);
    }
    ...
}