我如何从其他Android活动中运行代码

时间:2019-01-04 07:54:49

标签: java android android-activity

我有两个活动,活动1和活动2。在活动2中,我想从活动1按钮中使用某些东西

       protected void onNext() {
    AuthType authType = getSelectedAuthType();
    if (authType == AuthType.XOAUTH2) {
        Globals.getOAuth2TokenProvider().authorizeAPI(mAccount.getEmail(), this,
                new OAuth2TokenProvider.OAuth2TokenProviderAuthCallback() {
            @Override
            public void success() {
                updateAccountSettings("");
                AccountSetupCheckSettings.actionCheckSettings(
                        AccountSetupIncoming.this, mAccount, CheckDirection.INCOMING);
            }

            @Override
            public void failure(AuthorizationException e) {
                AccountSetupIncoming.this.failure(e);
            }
        });
        return;
    }
    updateAccountSettings(mPasswordView.getText().toString());
    AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.INCOMING);
}

此代码在活动2中,我想通过单击活动1来使用此代码。

我正在处理电子邮件应用程序,以上代码将用于登录google xoauth2,

下面是活动1中的代码,如果用户单击它,它将用于gmail xoauth,将转到活动2并使用上面的代码

  private void onNext() {
    if (mOAuth2CheckBox.isChecked()) {
        // Auto-setup doesn't support client certificates.
        activity2();
        return;
    }

1 个答案:

答案 0 :(得分:0)

1: 如果您想跳到另一个活动并运行您提到的代码,则可以在第二个活动的意图中传递一个标志。 例如

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtran("EXECUTE_CODE",true);
startActivity(intent);

在创建第二个活动时,您还可以检查该标志是否为真。

bool executeCode = getIntent().getExtras().getBoolean("EXECUTE_CODE");
   if(executeCode){
         RunCodeYouWantToExecute()
        }

2:如果要在firstActivity中返回结果,则可以使用

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    intent.putExtran("EXECUTE_CODE",true);
startActivityForResults(intent,123)

以及您的secondActivity

@Override
            public void success() {
                updateAccountSettings("");
                AccountSetupCheckSettings.actionCheckSettings(
                        AccountSetupIncoming.this, mAccount, 
                        CheckDirection.INCOMING);
                        setResults(RESULTS_OK);
                        finish();
            }

在您的首次活动中,您可以通过活动的替代方法

获得结果
@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent 
    data)
    {
    if(requestCode ==123 && resuldCode==RESULT_OK){
        //do taks
      }
    }