如何获得最后/先前的刷新意图

时间:2018-06-11 10:36:23

标签: android android-intent android-activity

我正在开发一个在线广播应用程序演示。当发生错误时,我创建了一个错误Activity,我想让用户访问它。在错误页面中,有一个刷新button,它应该刷新发生错误的最后Activity。但我不知道如何获取前一个Intent Activity导致错误页面在ButtonClick上刷新,我只知道让它返回特定{ {1}}。

2 个答案:

答案 0 :(得分:1)

您可以在两个调用活动中使用startActivityForResult

MainActivity.java

int REFRESH = 1;
private void startErrorActivity() {
    startActivityForResult(new Intent(this, ErrorActivity.class), REFRESH);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REFRESH) {
        //do refresh
    }
}

并在ErrorActivity.java

Button button = findViewById(R.id.refreshButton);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();  //this will take you back to calling activities onActivityResult method
        }
    });

答案 1 :(得分:0)

更新: 老实说,我认为@sneharc的答案更好。使用它。

试试这个:

public class ActivityA extends Activity {

    public void myFunction(){
        try{
            // something bad happens here. need to go to ErrorActivity
        }
        catch (SomeException e){
            Intent startErrorActivityIntent = new Intent(this, ErrorActivity.class);
            startErrorActivityIntent.putExtra("sourceActivity",  ActivityA.class.getSimpleName())
            startActivity(this, startErrorActivityIntent)
        }
    }

}


public class ActivityB extends Activity {

    public void myFunction(){
        try{
            // something bad happens here. need to go to ErrorActivity
        }
        catch (SomeException e){
            Intent startErrorActivityIntent = new Intent(this, ErrorActivity.class);
            startErrorActivityIntent.putExtra("sourceActivity",  ActivityB.class.getSimpleName())
            startActivity(this, startErrorActivityIntent)
        }
    }

}

public class ErrorActivity extends Activity {

    private Intent mReceivedIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        mReceivedIntent = getIntent();

    }

    public void onClickRefresh(){
        String retryActivityName = mReceivedIntent.getStringExtra("sourceActivity");
        Intent retryActivityIntent = null;
        if (!TextUtils.isEmpty(retryActivityName)){}
            if (retryActivityName.equalsIgnoreCase(ActivityA.class.getSimpleName()))
                retryActivityName = new Intent(this, ActivityA.class);
            if (retryActivityName.equalsIgnoreCase(ActivityB.class.getSimpleName()))
                retryActivityName = new Intent(this, ActivityB.class);
        }

        if (retryActivityIntent != null)
            startActivityForResult(this, retryActivityIntent);

    }

}