Android - 活动之间的 Snackbar
Posted
技术标签:
【中文标题】Android - 活动之间的 Snackbar【英文标题】:Android - Snackbar between Activities 【发布时间】:2015-09-29 09:03:46 【问题描述】:当我在 Activity B 中的回调完成时,我如何在 Activity A 中显示小吃栏(coordinatorLayout 在这里)? Snackbar 需要我的 coordinatorLayout 但我不能从 Activity B 中给它..
活动 B:
@Override
public boolean onOptionsItemSelected(MenuItem item)
int id = item.getItemId();
if(id == android.R.id.home)
this.finish();
return true;
else if(id == R.id.action_add)
callAddObject();
this.finish();
return true;
return super.onOptionsItemSelected(item);
public void callAddObject()
[...]
client.newCall(request).enqueue(new Callback()
@Override
public void onFailure(Request request, IOException e)
Log.d(TAG, "onFailure: " + e.getMessage());
// show snackbar in Activity A
@Override
public void onResponse(Response response) throws IOException
Log.d(TAG, "onResponse: " + response.body().string());
// show snackbar in Activity A
);
感谢您的帮助。
【问题讨论】:
屏幕上只能有 1 个 Activity。 当然可以,但我不能像监听器那样在活动 B 完成时警告活动 A 或其他什么? 正如 Gabriele 的评论所暗示的那样,您的问题可能可以通过其他方式解决。你的 2 个活动是做什么的,他们为什么要在另一个活动中创建一个小吃店? 活动 B 是一个表单,当表单提交时,我想关闭 B 并在 A 中添加小吃栏以表示成功或错误。如果不可能,我也可以在 B 中添加小吃店并在之后重定向到 A .. 可以在onActivityResult上做吗? 【参考方案1】:你应该像这样从 Activity A 打开 Activity B
startActivityForResult(activityBIntent, FORM_REQUEST_CODE);
然后当你的表单被提交时,以结果结束活动 B
@Override
public void onFailure(Request request, IOException e)
Log.d(TAG, "onFailure: " + e.getMessage());
// You might not want to finish the activity here, instead, you can show an error here
@Override
public void onResponse(Response response) throws IOException
Log.d(TAG, "onResponse: " + response.body().string());
setResult(FORM_SUBMITTED);
finish();
并在 Activity A 中对此做出反应
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data)
switch (requestCode)
case FORM_REQUEST_CODE:
if (resultCode == ActivityB.FORM_SUBMITTED)
Snackbar.make(mView, "Form submitted", Snackbar.LENGTH_SHORT).show();
另一种解决方案是在 IntentService 中调用服务器,并使用某种事件总线(即Otto)在通话结束。
【讨论】:
以上是关于Android - 活动之间的 Snackbar的主要内容,如果未能解决你的问题,请参考以下文章