所以我有活动1,这是主菜单活动。然后我有活动2,这是一个商店页面。商店活动从当前用户余额开始。当用户在商店中时,他可以购买几件东西。
我想在用户购买东西后将更新后的余额发送回主菜单活动。我正在使用StartActivityForResult,但问题是我不知道活动2(商店)何时结束。我不使用“完成”按钮或任何使用户返回主菜单的方法。用户只需单击手机上的“后退”按钮即可返回主菜单。
我将如何解决该问题并将更新后的余额退还至活动1?
先谢谢您
亚历山大
答案 0 :(得分:1)
有多种方法可以实现这一目标,您可以使用任何一种方法。
1)您可以{2}的override
方法{2}来检测用户何时按下后退按钮并在那里设置结果。
2)您可以在调用Activity1的onBackPress
方法时从数据库中获取更新的余额。 (或者,您可以将实时数据/数据绑定用于单个事实来源)
3)您可以使用单例类来保持当前余额。在Activity2中对其进行更新,并在Activity1中进行获取。
答案 1 :(得分:1)
Activity1
应该使用Activity2
启动startActivityForResult()
。
每次用户在Activity2
中执行某项操作时,请用setResult()
调用Intent
,其中将onActivityResult()
包含当前余额。
当用户按下“后退”按钮时,Activity1
将在Intent
中与您传递给setResult()
的最后一个checkLogin(userInput): Observable<any> {
return this.http.get('https://***/testhandler').pipe(
map(this.extractData),
catchError((error: HttpErrorResponse) => {
let errorMessage = '';
if (error.error instanceof ErrorEvent) {
// client-side error
errorMessage = `Error: ${error.error.message}`;
} else {
// server-side error
errorMessage = `Error Code: ${error.status}\nMessage: ${error.statusText}`;
}
// window.alert(errorMessage);
return of("");
})
// catchError(this.handleError<any>('addProduct'))
);`
一起被调用。然后,您可以从“意图”的“额外”中提取当前余额。
您不需要覆盖任何内容。
答案 2 :(得分:0)
您可以像这样调用第二个活动:
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
,然后在您的第一个活动中以这种方式等待结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// The user picked a contact.
// The Intent's data Uri identifies which contact was selected.
// Do something with the contact here (bigger example below)
}
}
}