我知道还有其他问题要求同样的事情.我已经看过他们中的大多数了.
大多数答案都会调用内存错误.我看不出一个ImageView只加载一个小图标(24x24像素)的东西是如何形成这样的东西的.
但是我想在这里发布堆栈跟踪,也许其他人可以找到我无法识别的东西并帮助我.
06-03 22:14:17.367 28590-28590/css.mvp.example.debug W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41e4ad40)
06-03 22:14:17.409 28590-28590/css.mvp.example.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: css.mvp.example.debug, PID: 28590 android.view.InflateException: Binary XML file line #8: Error inflating class ImageView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at css.mvp.example.main.projects.fragments.adapters.PollAnswersAdapter.getView(PollAnswersAdapter.java:38)
at android.widget.AbsListView.obtainView(AbsListView.java:2255)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
at android.widget.ListView.onMeasure(ListView.java:1175)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:735)
at android.view.View.measure(View.java:16540)
at …Run Code Online (Sandbox Code Playgroud) 我正在使用exoPlayer将视频流式传输到我的应用程序,到目前为止工作正常.我现在要做的是添加一些额外的功能,例如右下角的按钮,作为"全屏按钮".
但是有两个问题.第一个是ExoPlayer似乎没有提供任何Control类,因此您可以简单地添加一个按钮并覆盖其功能.我想我必须在视频顶部显示该按钮,所以我可能必须将两者都包在一起FrameLayout并为按钮添加gravity = bottom或者是否有另一种方式?
第二个问题是:如果用户点击全屏按钮,我接下来该怎么办?Fragment全屏添加另一个视频视图?但是,如何从用户点击按钮开始播放视频,而不是从头开始播放?我无法在exoPlayer中找到与特定时间相关的任何内容.
我有一些奇怪的问题,RecyclerView因为我更改了我的应用程序以从Room数据库加载数据.
我有一个屏幕(a Fragment),显示用户的配置文件.基本上它是GridLayout第一项(行)显示关于用户的一些信息,然后对于每行我显示三个图像.
代码RecyclerView是:
private void initializeRecyclerView() {
if (listAdapter == null) {
listAdapter = new PhotosListAdapter(getActivity(), userProfileAccountId, false);
}
rvPhotosList.setNestedScrollingEnabled(true);
rvPhotosList.getItemAnimator().setChangeDuration(0);
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), ProfileFragment.GRID_COLUMNS,
LinearLayoutManager.VERTICAL, false);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
// 3 spans for Header, 1 for photos
return listAdapter.isHeader(position) ? 3 : 1;
}
});
rvPhotosList.setLayoutManager(layoutManager);
int spacingInPixels = 1dp;
rvPhotosList.addItemDecoration(new PaddingItemDecoration(GRID_COLUMNS, spacingInPixels, true));
rvPhotosList.setAdapter(listAdapter);
}
Run Code Online (Sandbox Code Playgroud)
这就是我加载数据的方式:
compositeDisposable.add(
repository.getAccount(accountId)
.doOnNext(account -> …Run Code Online (Sandbox Code Playgroud) 我有MainActivity很多Fragments 并且在一个特定的片段中我想在系统栏后面绘制,所以我在运行时应用以下标志:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
Run Code Online (Sandbox Code Playgroud)
我现在想要的是当用户退出Fragment并输入另一个以删除该标志时,状态栏后面没有内容。我尝试将 null 作为参数传递给setFlags()方法,但这给出了错误。我已经搜索remove()或unSet()方法,但不存在。那么我应该如何删除另一个标志Fragment?
我看了这个答案在这里,也该在这里,我试图找出什么最适合我的情况.
我在内部启动一个服务onCreate(),我发出HTTP请求,然后得到id一个响应.然后我播放了这个id并在我的活动中收到它.
问题是用户显然可以通过打开抽屉并选择一个选项来导航到另一个活动,我可以错过广播.
显然,我的所有活动都可以扩展一个抽象类,扩展 Activity类似于此处提到但我不是100%确定它是最佳解决方案.如果用户在收到ID之前决定退出应用程序该怎么办?
编辑:应用程序架构
FormActivity 从用户可以添加有关图像的一些细节开始.QuizActivity.onCreate()的QuizActivity我开始的Service地方我:
id作为响应和id我得从服务器响应我再播了.QuizActivity有一个entryIdReceiver注册的地方收到id并存储在私人领域,直到用户决定离开活动或点击上传测验(如果他输入了测验的数据)IntentService使用id和测验数据开始.Activity或单击取消以创建测验我开始IntentService上传id带有"空测验数据"并将用户移至MainActivity.问题是:如果你在打开时关闭应用程序QuizActivity并且我还没有收到id,或者用户决定Activity在不添加测验的情况下使用抽屉到达另一个应用程序.我仍然需要启动服务并上传id"空测验数据".
我是新手,RxJava只是尝试实现一些例子来更好地理解发生了什么,所以我想到的EditText是一个Observable并textChangeEvent使用RxBinding库发出:
RxTextView.textChangeEvents(searchbar.getEditText())
.debounce(400, TimeUnit.MILLISECONDS)
.filter(new Func1<TextViewTextChangeEvent, Boolean>() {
@Override
public Boolean call(TextViewTextChangeEvent text) {
return (text.text().length() > 2);
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io());
Run Code Online (Sandbox Code Playgroud)
和Retrofitapi调用,其中呼叫的文本来自Observable上面.
所以我宣布了一个功能:
@Override
public Observable<SearchResponse> executeSearch(Observable<RxTextView> queryText) {
return searchService.getSearch(queryText)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
}
Run Code Online (Sandbox Code Playgroud)
现在我必须将这两者结合起来,所以当文本发生变化时,会有一个新的Retrofit呼叫,但我不知道如何"传递" queryText到服务.
我也尝试过:
Observable<TextViewTextChangeEvent>
searchBarText = RxTextView.textChangeEvents(searchbar.getEditText())
.debounce(400, TimeUnit.MILLISECONDS)
.filter(new Func1<TextViewTextChangeEvent, Boolean>() {
@Override
public Boolean call(TextViewTextChangeEvent text) {
Timber.i("Executes!!! text : %s", text.text().toString());
return (text.text().length() > 2);
}
}) …Run Code Online (Sandbox Code Playgroud)