- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 ViewPager
中有 5 个滑动标签,每个标签都有不同的 fragment 。如果数据加载失败,我想通过 Snackbar 通知用户。一切正常。
我想要实现的是,如果数据未能加载到特定 fragment 中,我只想在该特定 fragment 中显示一个 Snackbar
。可能吗?
I'll elaborate:
考虑一个包含 3 个 fragment (A、B 和 C)的滑动选项卡布局。所有 3 个 fragment 都执行一些网络查询并加载数据。如果由于某种原因数据无法加载到 fragment A 中,则应无限期地显示一个 snackbar。如果用户滑动到 fragment B(其中数据已成功加载),则不应显示 snackbar。
所以 snackbar 应该只在加载数据失败的 fragment 中可见。
Fragment Code:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_latest"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/windowBackground"
tools:context=".MainFragment">
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/date_layout"
android:visibility="gone"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<android.support.v7.widget.AppCompatSpinner
android:id="@+id/country_select"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/country"
/>
<android.support.v7.widget.AppCompatSpinner
android:id="@+id/month_select"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/month"
/>
<android.support.v7.widget.AppCompatSpinner
android:id="@+id/year_select"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/year"
/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/latest_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.SwipeRefreshLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/not_available"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:textSize="16sp" />
</LinearLayout>
Snackbar Code:
if (Utils.isNetworkAvailable(getActivity())) {
adapter.notifyDataSetChanged();
loadData();
} else {
swipeRefreshLayout.setRefreshing(false);
textView.setText(getString(R.string.check_internet));
Snackbar.make(frameLayout, "Loading failed.", Snackbar.LENGTH_INDEFINITE).setAction("Retry", new View.OnClickListener() {
@Override
public void onClick(View view) {
((MainActivity) getActivity()).loadAds();
refreshData();
}
}).show();
}
where
FrameLayout frameLayout = (FrameLayout) v.findViewById(R.id.fragment_latest);
最佳答案
你可以做的是覆盖 setUserVisibleHint
并在 fragment 变得不可见时将 snakbar 存储在 fragment 的全局变量中使用以下方法关闭 snackbar
@Override
public void setUserVisibleHint(boolean visible)
{
super.setUserVisibleHint(visible);
if (!visible && snackbar != null ){
snackbar.dismiss()
}
}
关于android - 特定 fragment 中的 Snackbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40011571/
Snackbar.make(...).show() 将只显示最后一个 snackbar,不像 toast 其他 snackbar 都消失了。 for(int i = 1;i mSnackbarLis
Snackbar.make(...).show() 将只显示最后一个 snackbar,不像 toast 其他 snackbar 都消失了。 for(int i = 1;i mSnackbarLis
我有一个实现 swipetorefresh 布局的 recyclerview - 如果您在列表中向下滑动手指,它将加载较新的帖子。它还有一个 onloadmorelistener 用于对我的 recy
我正在尝试添加 Snackbar到我的应用程序, Snackbar.make(findViewById(android.R.id.content), R.string.not_
我对 snackbar 有疑问。我的 snackbar 对解雇没有反应 我的代码: ConnectivityReceiver = new BroadcastReceiver() { @
我试图在显示 snackbar 时将焦点直接放在 snackbar 中的操作按钮上,以便让用户知道可以使用 snackbar 中显示的警报消息执行某些操作。注意:这是针对对讲模式。我尝试使用 requ
如果我连续多次调用snackbar,则只显示最后一个snackbar 项。 例如使用下面的代码,只会显示第 3 项。似乎第 1 项和第 2 项的 Snackbar.LENGTH_LONG 被忽略(并设
我的应用程序中有一个包含消息的 RecyclerView。在向右滑动时,我将其配置为删除消息,在向左滑动时,我将其配置为存档消息。下面是 ItemTouchHelper 部分删除归档相关的代码: if
我正在尝试使用此设置 snackbar 长度: Snackbar oSnackbar = Snackbar.make(Context, "Testing", Snackbar.LENGTH_LONG)
flutter SnackBar的动画入口是什么? ScaffoldMessanger.of(context).showSnackBar(SnackBar( animation: /* --- *
在我的应用程序中,可能(并且有意!)多个 SnackBar元素被创建。这些 SnackBar元素排队并一个接一个地显示,这一切都很好。但是,如果我转到不同的屏幕然后返回(所以 push 和 pop 一
我有一个 flutter 应用程序,它在应用程序的不同屏幕上发出许多不同的 http 请求。现在,我想实现一些通用的错误处理,例如,每当没有连接时,我都想显示一个 SnackBar,无论我目前在应用程
我因为工作室提示 Dialog 而苦苦挣扎已弃用, 所以我又去阅读文档,似乎 Toast也被弃用了。 所以我尝试从 Toast 迁移至Snackbar ,但目前失败...我 我加了 implement
我有问题在我的应用程序中实现了 BLoC 模式。 一旦我有一个特殊的事件,我需要显示一个 snackbar ,但我有这个错误: The following assertion was thrown b
我尝试在 JavaScript 中使用“if else”语句,但无法使其工作。 这是js脚本: var vid = document.getElementById("myVideo"); functi
我使用 Material 2 创建了 Snackbar(下面我添加了演示)。我在主页中有一个按钮,当我单击该按钮时,它会在页面底部显示消息(snackbar)。我想将其(快捷栏消息)更改为页面的右上角
我有按钮而不是 float 操作按钮,我想将其与 snackbar 锚定,因为它与 float 操作栏锚定,就像显示 snackbar 时 float 操作按钮向上移动一样,对于 float 操作栏,
在ReactJS中,我想仅在登录成功时显示material-ui Snackbar。在ReactJS中有哪些方法可以做到这一点? 最佳答案 Material-ui Snackbar 的 open 状态
您好,我有一段代码可以生成 snackbar 。我使用带有关闭选项的 Bootstrap 警报来生成 snackbar ,但是当我单击关闭按钮时,它对我不起作用。是否可以添加关闭选项?如果是,你能解释
令我惊讶的是,如果 TextView 跨越多行,Snackbar 本身似乎会在 TextView 上设置额外的填充。它有效地使 Snackbar 的高度加倍,并且由于某种原因仅影响垂直填充。我在 Sn
我是一名优秀的程序员,十分优秀!