Java 从子级刷新父级活动?

Java 从子级刷新父级活动?,java,android,android-activity,Java,Android,Android Activity,伙计们,我对java android编程非常陌生,这是我制作的第一个应用,我有一个问题: 如何从另一个活动(从主活动调用)刷新我的主活动? 如果您能给我举一些例子,我也会很感激,因为我还不是很了解方向…您可以使用startActivityForResult,而不是context.startActivity调用context.startActivityForResult,然后在完成之前在已启动的活动中设置结果 这是你的电话号码 示例代码: // Activity A public class Ac

伙计们,我对java android编程非常陌生,这是我制作的第一个应用,我有一个问题: 如何从另一个活动(从主活动调用)刷新我的主活动? 如果您能给我举一些例子,我也会很感激,因为我还不是很了解方向…

您可以使用startActivityForResult,而不是context.startActivity调用context.startActivityForResult,然后在完成之前在已启动的活动中设置结果

这是你的电话号码

示例代码:

// Activity A
public class ActivityA extends Activity {

    private static final int REQUEST_CODE_ACTIVITY_B_FOR_RESULT = 1; // or other int value

    // sample code which starts Activity B
    private void onSomeButtonClick() {
        Intent intent = new Intent(this, ActivityB.class);
        startActivityForResult(intent, REQUEST_CODE_ACTIVITY_B_FOR_RESULT);
    }

    // this method will be called when started activity finished 
    // and returned some result of its work
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent resultData) {
        super.onActivityResult(requestCode, resultCode, resultData);

        if (requestCode == REQUEST_CODE_ACTIVITY_B_FOR_RESULT) {
            if (resultCode == RESULT_OK) {
                // handle result ok and resultData here
            } else {
                // handle result canceled or other resultCode and its resultData here
            }
        }
    }
}


// Activity B
public class ActivityB extends Activity {        

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setResult(RESULT_CANCELED); // by default result of starting activity is negative
    }

    // some code which doing some action and setting result as ok
    private void doSomething() {
        Intent resultData = new Intent();
        resultData.putExtra("SOME_EXTRA", "did it"); // or other result data
        setResult(RESULT_OK, resultData);
        finish(); // finishing this activity, result code and result data will be accessible in previous activity 
    }
}

如何从子活动调用主活动。使用接口

一,。在子活动中创建公共界面

二,。实现主活动说明中的接口右键单击错误并选择添加导入添加引用添加未实现的方法

public class KmlReader extends ActionBarActivity implements
    BestRidesSettingsDialogListener {
三,。当子活动在子活动中启动时,将getActivity强制转换为公共界面

四,。然后在子活动中,当单击按钮或发生某个事件时,调用接口方法

五,。如果您已经在主活动中填写了未实现的方法存根,那么您可以直接在子活动的主活动中执行代码


评论侧栏:接口一直是我最喜欢的java部分。你可以称之为监听或回拨。只需右键单击错误并选择AddReference,AddUnimplementedMethods。要做到这一点,确实没有太多的击键。界面也许是协调团队做出下一件大事的最简单方式。

请给我举个例子好吗?非常感谢,但我还是不太明白该怎么做。我可以给你我的代码,这样你可以给我一些更好的解释吗?
public class KmlReader extends ActionBarActivity implements
    BestRidesSettingsDialogListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    // the activity may be null if this is called without implementing the
    // BestRidesSettingsDialogListener (The settings object saves the
    // setting so the
    // call back may not be needed.

    activity = (BestRidesSettingsDialogListener) getActivity();
@Override
public void onCheckedChanged(RadioGroup rg, int checkId) {
    // TODO Auto-generated method stub
    int mapType = 0;
    switch (checkId) {
    case R.id.RDORoad:
        mapType = GoogleMap.MAP_TYPE_NORMAL;
        break;
    case R.id.RDOHybrid:
        mapType = GoogleMap.MAP_TYPE_HYBRID;
        break;
    case R.id.RDOSatelite:
        mapType = GoogleMap.MAP_TYPE_SATELLITE;
        break;
    case R.id.RDOTerrain:
        mapType = GoogleMap.MAP_TYPE_TERRAIN;
        break;
    }
    // run the activity onchange
    // if the activity is null there is no listener to take action on the
    // settings
    if (activity != null) {
        activity.onMapSettingsChange(mapType);
    }
@Override
public void onMapSettingsChange(int mapType) {
    if (mMap != null) {
        mMap.setMapType(mapType);
    }
}