【发布时间】:2014-06-21 13:58:55
【问题描述】:
我之前询问过的应用程序需要特定活动的 ID,该 ID 用于进行数据库查询。当活动开始时,我从意图中获取此 ID,因此:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_counting);
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
project_id = extras.getLong("project_id");
}
// ... the rest of the initialisation follows here
}
此活动 (CountingActivity) 反过来通过用户交互 (EditProjectActivity) 启动另一个活动,该交互以 CountingActivity 作为父项,以便通过主页按钮导航返回。在 AndroidManifest.xml 我有这个:
<activity
android:name="myproject.EditProjectActivity"
android:label="@string/title_activity_edit_project"
android:theme="@style/Theme.AppCompat"
android:parentActivityName="myproject.CountingActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="CountingActivity" />
</activity>
当用户完成编辑后,他们可以做以下三件事之一:
- 按“保存”按钮。数据被保存,finish() 被调用并且 CountingActivity 返回。
- 按 Android 后退按钮。 EditProjectActivity 从堆栈中弹出而不保存,并且计数活动返回。
- 按左上角的应用程序图标。不知何故,CountingActivity 是在没有 project_id 意图的情况下启动的;该值最终被设置为 0,并且在数据库中找不到任何内容,结果不理想。
不知何故,我需要确保在导航回父活动时将 project_id 作为意图传递。我没有运气就试过了:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if (id == R.id.home) // I also tried R.id.homeAsUp
{
Intent intent = new Intent(EditProjectActivity.this, CountingActivity.class);
intent.putExtra("project_id",project_id);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
但是,仍然没有 project_id,因此无法进行数据库查询。所以,如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】:
-
尝试将 project_id 放入包中,然后通过意图传递包,然后接收包,并从该包中获取 prohect _id。为我工作。
-
看来答案其实可以在这里找到:stackoverflow.com/questions/14462456/…
标签: android android-intent android-navigation