我有三个activities
,A,B和C.
并且流程是--- A-> B-> C-> A.
我已经使用t做了这个,我得到了完美的结果。
Intent intent= new Intent(A.this,B.class);
startActivityForResult(intent,RC_STATE_LIST);
但是,我在以下情况下陷入困境:
activity
包含EditText
,所以当我转到activity
从A到B ......并且Activity
A已在其编辑文本中包含.. 。
如果我从活动B回到A ..我想要activity
A,因为它是我之前离开它而不使用Intent。
即使我没有使用OnBackPress
或在Activity
B完成。
因为我有条件
Activity
B和C都有后退按钮。
这里,如果我去A-> B-> C,
然后从B回到C然后我想从B回到A,仍然想要我的活动 A原样。
我在StackOverflow上提到了很多链接,但没有一个对我有效。
我该怎么做才能完成这项任务?帮助我。
提前致谢。
答案 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)
答案 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);
}
另一种解决方案
将证书保存到 sharedPreferences
或Bundle
,然后检索或获取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