活动A-> B-> C-> A,但当从B-> A返回时,活动A在我离开时设定

时间:2017-06-29 04:21:07

标签: android android-activity

我有三个activities,A,B和C. 并且流程是--- A-> B-> C-> A.

我已经使用t做了这个,我得到了完美的结果。

Intent intent= new Intent(A.this,B.class);
startActivityForResult(intent,RC_STATE_LIST);

但是,我在以下情况下陷入困境:

  1. activity包含EditText,所以当我转到activity从A到B ......并且Activity A已在其编辑文本中包含.. 。 如果我从活动B回到A ..我想要activity A,因为它是我之前离开它而不使用Intent。

  2. 即使我没有使用OnBackPress或在Activity B完成。

  3. 因为我有条件 Activity B和C都有后退按钮。

    这里,如果我去A-> B-> C,

    然后从B回到C然后我想从B回到A,仍然想要我的活动 A原样。

    我在StackOverflow上提到了很多链接,但没有一个对我有效。

    我该怎么做才能完成这项任务?帮助我。

    提前致谢。

6 个答案:

答案 0 :(得分:0)

试试这个。

// Add activity
public static void addActivities(String actName, Activity _activity) {
    if (Config.screenStack == null)
        Config.screenStack = new HashMap<String, Activity>();
    if (_activity != null)
        Config.screenStack.put(actName, _activity);
}

// Remove Activity
public static void removeActivity(String key) {
    if (Config.screenStack != null && Config.screenStack.size() > 0) {
        Activity _activity = Config.screenStack.get(key);
        if (_activity != null) {
            _activity.finish();
        }
    }
}

用户在setContentView添加到堆栈之前添加活动。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addActivities("DemoActivity", DemoActivity.this)
    setContentView(R.layout.activity_create_feed_post);
}

如果您想在应用中存在所有活动,可以see this code.

答案 1 :(得分:0)

试试这个,

在Edittext中添加 android:freezesText =“true” paremeter,它就像魅力一样。

有关详细信息,请单击link

答案 2 :(得分:0)

在清单文件中。将launchMode添加到Activity Tag中的标准。

  

机器人:launchMode =&#34;标准&#34;

答案 3 :(得分:-1)

活动A:

Intent intent= new Intent(A.this,B.class);
intent.putExtra("EditTextData",mEditText.getData().toString());
startActivityForResult(intent,RC_STATE_LIST); // or startActivity(intent);

活动B(如果你想回到A):

private String aData = "";
....    
Intent intent= new Intent(B.this,A.class);
intent.putExtra("EditTextData",aData);
startActivity(intent);

活动A:

@Override
public void onCreate(Bundle savedInstanceState){
       .....
       String data = getIntent().getStringExtra("EditTextData");
       mEditText.setText(data);
}

另一种解决方案

将证书保存到 sharedPreferencesBundle,然后检索或获取onCreate()

中的数据

答案 4 :(得分:-1)

活动A:

Intent intent= new Intent(A.this,B.class);
intent.putExtra("EditTextData",mEditText.getData().toString());
startActivityForResult(intent,RC_STATE_LIST); // or startActivity(intent);

活动B(如果你想回到A):

在此,只需调用此 - &gt;

@Override
public void onBackPressed() {
    super.onBackPressed();
}

答案 5 :(得分:-1)

试试这个: -

在活动A的EditText中的xml添加属性android:freezesText="true"中,如下所示: -

<EditText
                android:id="@+id/mobile_no"
                android:layout_width="270dp"
                android:layout_height="40dp"
                android:layout_gravity="center"
                android:background="@drawable/line_border_color"
                android:digits="0123456789+"
                android:hint="@string/prompt_mobile"
                android:inputType="number|textPhonetic"
                android:lines="1"
                android:maxLength="13"
                android:maxLines="1"
                android:paddingLeft="25dp"
                android:paddingRight="25dp"
                android:freezesText="true" />

以上代码冻结了EditText值。

如果您有列表和所选项目,那么

//Define
int posSelected = -1;

在ListView SelectItemListener中存储该位置:

posSelected = position;

在onResume()中将列表视图集选择设置为该位置。

此外,当您的首发B活动(A-> B)时,请勿finish(); A 活动。

Intent intent= new Intent(A.this,B.class);
intent.putExtra("EditTextA",mEditText.getText().toString());
startActivity(intent);
//finish();     //Don't do this because it's main activity you need that on bottom(parent) of stack of Activity in ActivityManager.

对于条件A-> B-> C然后直接你想要C ---> A,你必须在你开始C活动时完成()B(B-> C)。您的代码应如下所示(B-> C): -

Intent intent= new Intent(B.this,C.class);
intent.putExtra("DataStringB",mEditText.getText().toString());
startActivity(intent);
finish();   //For C-->A back or Comment this line if you want back C->B->A