【问题标题】:Android call method from intent来自意图的Android调用方法
【发布时间】:2014-07-10 04:45:20
【问题描述】:

我有这个代码:

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intent = new Intent(this, ConnectDialog.class);
        update();
    }

    private void update(){
        if(a)
            startActivity(intent);
        else{
            //code
        }
    }

}

还有这个:

public class ConnectDialog extends Activity{

    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_connect_dialog);
        btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                finish();
            }
        });

    }
}

问题是:当我点击Intent的按钮时,是否可以再次执行主Activity的方法更新?非常感谢

【问题讨论】:

标签: android android-intent methods


【解决方案1】:

只需将对update 的调用放入MainActivityonResume()。这样,它会在第一次启动时被调用,当MainActivity 稍后再次显示时:

@Override
protected void onResume(){
    super.onResume;
    update();
}

【讨论】:

  • 我以前怎么没想到呢?谢谢
【解决方案2】:

我会使用onActivityResult 方法。

将您的 update 方法更改为

int YOUR_RESULT = 100;

private void update(){
    if(a)
        startActivityForResult(intent, YOUR_RESULT);
    else{
        //code
    }
}

然后在同一个活动中,使用这个方法:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == YOUR_RESULT) {
        update();
    }
}

如果您使用此方法,update() 方法只会在从该活动返回时被调用。

【讨论】:

    【解决方案3】:

    如果您检查 Android 生命周期,您将获得更新未执行的原因。 如何在点击时调用更新方法..

     private void update(){
            if(a)
                startActivityForResult(intent, 0);
            else{
                //code
            }
        }
    

    并使用onActivityResult再次调用更新方法

    @Override
        protected void onActivityResult(int arg0, int arg1, Intent arg2) {
    
            super.onActivityResult(arg0, arg1, arg2);
            update();
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多