我有3个活动,我想返回第一个活动并在点击第二个和第三个活动的按钮后刷新它,而不使用“new Intent(...)
”!
我使用此代码:
ActivityFirst actFirst = (ActivityFirst) _context;
actFirst.recreate();
但它不起作用!错误:java.lang.ClassCastException
有没有办法在不使用代码的情况下刷新第二个或第三个活动的第一个活动?
Intent intent = new Intent(this, ActivityFirst.class);
startActivity(intent);
答案 0 :(得分:1)
您无法刷新第一个Activity
,因为当Activity
不在前台时线程会暂停。另外,我假设您ClassCastException
的原因是因为您尝试通过传递当前Activity
将第二个或第三个Activity
投放到第一个Context
。
您应该像这样刷新Activity
onResume
内的第一个@Override
protected void onResume() {
super.onResume();
recreate();
}
:
Activity
要再次开始你的第一个Intent intent = new Intent(this, FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
,你可以打电话给它。
[DllImport("User32.dll")]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
答案 1 :(得分:0)
如果要在单击这些活动上的按钮时完成第二个或第三个活动,则只需在First Activity中使用onActivityResult并刷新第一个活动。 如果您只想在没有完成第二个第三个活动的情况下刷新,则将广播消息发送到第一个活动。
让我知道这对你有用吗?
答案 2 :(得分:0)
浏览活动生命周期,当您打开第二个活动时,第一个活动将处于暂停状态。因此,在恢复活动时,您可以刷新活动。
请尝试以下方法实施:
onPause()
{
{1}}
答案 3 :(得分:-2)
startActivity(new Intent(B.this,A.class));
finish();
如果您将Intent从第二个活动( B.this )传递给第一个活动( A.class );它将重新创建第一个活动。由于完成(); 。
,当你按回而不是第二次打开活动时