我正在使用jetpack的2个组件:分页库和导航。
就我而言,我有2个片段:ListMoviesFragment和MovieDetailFragment
当我滚动一定距离并单击recyclerview的电影项目时,MovieDetailFragment被附加,并且ListMoviesFragment在后堆栈中。然后我按返回按钮,ListMoviesFragment从后退堆栈中恢复。
该点是滚动位置,并且ListMoviesFrament的项被重置,就像第一次附加到其活动一样。因此,如何保持recyclerview的状态以防止这种情况?
换句话说,如何使用FragmentTransaction以传统方式但以现代方式(导航)保留整个片段的状态,例如隐藏/显示片段
我的示例代码:
片段布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="net.karaokestar.app.SplashFragment">
<TextView
android:id="@+id/singer_label"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Ca s?"
android:textColor="@android:color/white"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/btn_game_more"
android:layout_centerVertical="true"
android:background="@drawable/shape_label"
android:layout_marginTop="10dp"
android:layout_marginBottom="@dimen/header_margin_bottom_list"
android:textStyle="bold"
android:padding="@dimen/header_padding_size"
android:textAllCaps="true"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list_singers"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
片段Kotlin代码:
package net.karaokestar.app
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.navigation.fragment.findNavController
import androidx.paging.LivePagedListBuilder
import androidx.paging.PagedList
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_splash.*
import net.karaokestar.app.home.HomeSingersAdapter
import net.karaokestar.app.home.HomeSingersRepository
class SplashFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? …Run Code Online (Sandbox Code Playgroud) android android-recyclerview android-architecture-navigation android-paging
我今天刚刚更新了Android Studio 3.0.但事实证明Android Monitor失踪了.
https://developer.android.com/studio/profile/am-gpu.html
几乎开发人员必须支持各种设备.但Android Studio 3.0仅支持API 21及更高版本
我的问题是:我们有没有其他工具可以做到这一点?我只是不想在Android Studio 3.0旁边使用android studio 2.3.3
我想保持音频质量,只是编码视频轨道,所以我使用这个命令:
ffmpeg -i INPUT -c:a copy -c:v libx265 video-h265.mp4
Run Code Online (Sandbox Code Playgroud)
但视频轨道的编解码器是hev1.我想要它是hvc1
我有 2 个 Main 类的内部线程类。有时,当一个添加新元素而另一个被删除时,它会导致 ConcurrentModificationException。我想我不知道如何同步它们。
Class Main{
HashSet<MyObject> set;
Thread A{
run(running){
...
set.add(obj);
...
}
}
Thread B{
run(){
while (running) {
for (Iterator<MyObject> i = set.iterator(); i.hasNext();) {
MyObject obj= i.next();
if (!obj.isSmt()) {
i.remove();
...
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我知道如何处理方法jsonObj.toString()但我有理由不能这样做.我的JSONObject里面有一个JSONArray,它有太多的数据,所以如果我将它转换为String然后转换回我害怕它达到String类型的限制.所以我想传递一个纯对象,而不是使用该方法.我实现Parcelable接口来做到这一点,但我得到错误" java.lang.RuntimeException:Parcel:无法编组值 "
public class MJSONObject implements Parcelable {
private JSONObject jsonObject;
public MJSONObject() {
}
public MJSONObject(JSONObject jsonObject) {
this.jsonObject = jsonObject;
}
public void set(JSONObject jsonObject) {
this.jsonObject = jsonObject;
}
public JSONObject get() {
return jsonObject;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
public static final Parcelable.Creator<MJSONObject> CREATOR = new Parcelable.Creator<MJSONObject>() {
public MJSONObject createFromParcel(Parcel in) {
return new MJSONObject(in);
}
public MJSONObject[] newArray(int size) {
return new MJSONObject[size];
} …Run Code Online (Sandbox Code Playgroud) 我是一个愚蠢的学生.我有一个问题是标题.我想当我这样做时,返回boolean或不对我没有影响:
List<String> lst = new ArrayList<String>();
lst.add("whatever");
lst.remove("whatever");
Run Code Online (Sandbox Code Playgroud)
这里是API中Arraylist Class的remove方法(来自Collection <E>接口的覆盖):
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) {
fastRemove(index);
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我想如果在Collection <E>界面中,框架编写的设计者可以,public void remove(Object o);但他们必须有一定的目的,我不明白.返回布尔值是什么?请告诉我
哈希是一个发电机.
mapper = {}
for hash, offset in hashes:
mapper[hash.upper()] = offset
len(mapper)
Run Code Online (Sandbox Code Playgroud)
映射器长度:1444
hashlist = []
for hash in hashes:
hashlist.append(hash)
len(hashlist)
Run Code Online (Sandbox Code Playgroud)
哈希表的长度:1477
那是我不明白的!
android ×3
java ×2
android-architecture-navigation ×1
collections ×1
ffmpeg ×1
json ×1
python ×1
python-2.7 ×1
string ×1