D.R*_*.R. 4 serialization android android-activity
所以我有一个管理工作人员的应用程序.在应用程序的一个部分中,我有一个从Web服务检索到的工作程序列表.然后,用户从列表中选择一个工作器,列表将启动一个新活动(将Workorder对象传递给它),显示工作订单详细信息.用户可以在此期间编辑部分工作订单.如果用户返回列表(通过后退按钮),我需要将修改后的工作单BACK传递给工作单列表,并使用新修改的对象更新或替换旧对象.否则,(当前正在发生)用户编辑工作订单,但如果他们返回列表并再次选择相同的工作订单,则工作订单详细信息activty将显示所有旧数据.做这个的最好方式是什么.目前我有Workorder类实现Serializable,因此可以将workorder对象传递给连续的活动.
这样可行:列表 - >工作订单A.
但这就是我遇到问题的地方:List < - Workorder A(已修改)
我不确定我是否应该使用startActivtyForResult并传回工作订单对象.我知道这是可能的,但我不确定是否有更优雅的方法来做到这一点.感谢您提供的任何帮助,非常感谢!
Ale*_*lex 10
如果您的Workorder对象已经存在Serializable,则可以轻松地在Bundleintent中传递对象.要将对象保存到意图,您将执行以下操作:
intent.putExtra("SomeUniqueKey", [intance of workorder]);
Run Code Online (Sandbox Code Playgroud)
并加载另一个活动:
Workorder workorder = (Workorder) intent.getSerializableExtra("SomeUniqueKey");
Run Code Online (Sandbox Code Playgroud)
如果您正在使用startActivityForResult它将如此:
WorkorderListActivity.java:
Intent intent = new Intent(this, WorkorderDetailsActivity.class);
intent.putExtra("SomeUniqueKey", _workorder);
startActivityForResult(intent, [UniqueNumber]);
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == [UniqueNumber])
{
if (resultCode == RESULT_OK)
{
Workorder workorder = (Workorder) intent.getSerializableExtra("SomeUniqueKey");
// Do whatever with the updated object
}
}
}
Run Code Online (Sandbox Code Playgroud)
WorkorderDetailsActivity.java:
public void onCreate(Bundle savedInstanceState)
{
Bundle bundle = getIntent().getExtras();
_workorder = (Workorder) bundle.getSerializable("SomeUniqueKey");
// Display the object
}
public void onBackPressed()
{
// Update _workorder object
Intent intent = getIntent();
intent.putExtra("SomeUniqueKey", _workorder);
setResult(RESULT_OK, intent);
}
Run Code Online (Sandbox Code Playgroud)
我相信这应该有效.
| 归档时间: |
|
| 查看次数: |
12033 次 |
| 最近记录: |