Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用设置片段中的数据存储在android中保存密钥和值_Android_Retrofit_Android Jetpack - Fatal编程技术网

如何使用设置片段中的数据存储在android中保存密钥和值

如何使用设置片段中的数据存储在android中保存密钥和值,android,retrofit,android-jetpack,Android,Retrofit,Android Jetpack,我不知道如何在setting fragment中添加数据存储,用户可以在其中更改API键的“值”。这是https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=5&limit=10API im正在使用。从API中,我想更改minmag值,用户可以将minmag的任何值放入设置片段中。结果应保存在共享首选项中,并且结果应显示在主活动中 Im使用kotlin,改装并遵循android架构组

我不知道如何在setting fragment中添加数据存储,用户可以在其中更改API键的“值”。这是
https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=5&limit=10
API im正在使用。从API中,我想更改
minmag
值,用户可以将
minmag
的任何值放入设置片段中。结果应保存在共享首选项中,并且结果应显示在主活动中

Im使用kotlin,改装并遵循android架构组件

EarthquakeApiService.kt

     private const val BASE_URL = "https://earthquake.usgs.gov/fdsnws/"

// https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=5&limit=10
private val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

private val retrofit = Retrofit.Builder()
    .addConverterFactory(MoshiConverterFactory.create(moshi))
    .baseUrl(BASE_URL)
    .build()

interface EarthquakeApiService {
    @GET("event/1/query?")
    suspend fun getJson (@Query("minmag") minMagnitude : String,
     @Query("format") formatted : String, @Query("limit") limited: String,
@Query("orderby") orderBy : String) : EarthquakeResponse
}

object BookApi {
    val retrofitService : EarthquakeApiService by lazy { retrofit.create(EarthquakeApiService::class.java) }
}
data class EarthquakeResponse( val features : Array<Feature> ?)

data class Feature( val properties : Properties)

data class Properties(val mag : Double,
val place : String , val time : Long)
   class OverviewFragment : Fragment() {

     private val viewModel: OverviewViewModel by lazy {
        ViewModelProvider(this).get(OverviewViewModel::class.java)
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?): View? {
        val binding: FragmentOverviewBinding = DataBindingUtil.inflate(
            inflater, R.layout.fragment_overview, container, false)
        binding.viewModel = viewModel
        binding.recycleList.adapter = RecyclerviewAdapter()
        binding.lifecycleOwner = this
        setHasOptionsMenu(true)
        binding.button.setOnClickListener { view: View ->
            view.findNavController().navigate(R.id.action_overviewFragment_to_settingsFragment)
        }
        return binding.root
    }

     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
         inflater?.inflate(R.menu.overflow_menu, menu)
     }

     override fun onOptionsItemSelected(item: MenuItem): Boolean {
         return NavigationUI.onNavDestinationSelected(item, requireView().findNavController())
                 || super.onOptionsItemSelected(item)
     }
}
     class RecyclerviewAdapter() : ListAdapter<Feature, RecyclerviewAdapter.EarthquakePropertyViewHolder>(DiffCallback()) {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EarthquakePropertyViewHolder {
        return EarthquakePropertyViewHolder.from(parent)
    }

    override fun onBindViewHolder(holder: EarthquakePropertyViewHolder, position: Int) {
        val item = getItem(position)
        holder.bind(item)
    }
    class EarthquakePropertyViewHolder private constructor(val binding: EarthquakeRawBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(books: Feature) {
            binding.property = books
            binding.executePendingBindings()
        }
        companion object {
            fun from(parent: ViewGroup): EarthquakePropertyViewHolder {
                val layoutInflater = LayoutInflater.from(parent.context)
                val view = EarthquakeRawBinding.inflate(layoutInflater, parent, false)
                return EarthquakePropertyViewHolder(view)
            }
        }
    }
}

class  DiffCallback : DiffUtil.ItemCallback<Feature>() {
    override fun areItemsTheSame(oldItem: Feature, newItem: Feature): Boolean {
        return oldItem === newItem
    }
    override fun areContentsTheSame(oldItem: Feature, newItem: Feature): Boolean {
        return oldItem == newItem

    }
}
     @BindingAdapter("listData")
fun bindRecyclerView(recyclerView: RecyclerView, data: EarthquakeResponse?) {
    val adapter = recyclerView.adapter as RecyclerviewAdapter
    if (data != null) {
        adapter.submitList(data.features?.toList())
    }
}

@BindingAdapter("magnitude")
fun bindAuthor(textView: TextView, magName : Double) {
   val decimalFormat = DecimalFormat("0.0")
    val formattedMagnitude = decimalFormat.format(magName)
    textView.setText(formattedMagnitude.toString())
}

@BindingAdapter("place")
fun bindTitle(textView: TextView, titlePlace : String) {
    textView.setText(titlePlace)       
}

@BindingAdapter("time")
fun bindTime(textView: TextView, titleTime :Long) {
    val timeFormat = SimpleDateFormat("h:mm a")
    val formattedTime = timeFormat.format(titleTime)
    textView.setText(formattedTime.toString())
}

@BindingAdapter("date")
fun bindDate(textView: TextView, titleTime :Long) {
    val timeFormat = SimpleDateFormat("LLL dd, yyyy")
    val formattedDate = timeFormat.format(titleTime)
    textView.setText(formattedDate.toString())
}
class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.root_preferences, rootKey)
    }
}
地震响应.kt

     private const val BASE_URL = "https://earthquake.usgs.gov/fdsnws/"

// https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=5&limit=10
private val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

private val retrofit = Retrofit.Builder()
    .addConverterFactory(MoshiConverterFactory.create(moshi))
    .baseUrl(BASE_URL)
    .build()

interface EarthquakeApiService {
    @GET("event/1/query?")
    suspend fun getJson (@Query("minmag") minMagnitude : String,
     @Query("format") formatted : String, @Query("limit") limited: String,
@Query("orderby") orderBy : String) : EarthquakeResponse
}

object BookApi {
    val retrofitService : EarthquakeApiService by lazy { retrofit.create(EarthquakeApiService::class.java) }
}
data class EarthquakeResponse( val features : Array<Feature> ?)

data class Feature( val properties : Properties)

data class Properties(val mag : Double,
val place : String , val time : Long)
   class OverviewFragment : Fragment() {

     private val viewModel: OverviewViewModel by lazy {
        ViewModelProvider(this).get(OverviewViewModel::class.java)
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?): View? {
        val binding: FragmentOverviewBinding = DataBindingUtil.inflate(
            inflater, R.layout.fragment_overview, container, false)
        binding.viewModel = viewModel
        binding.recycleList.adapter = RecyclerviewAdapter()
        binding.lifecycleOwner = this
        setHasOptionsMenu(true)
        binding.button.setOnClickListener { view: View ->
            view.findNavController().navigate(R.id.action_overviewFragment_to_settingsFragment)
        }
        return binding.root
    }

     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
         inflater?.inflate(R.menu.overflow_menu, menu)
     }

     override fun onOptionsItemSelected(item: MenuItem): Boolean {
         return NavigationUI.onNavDestinationSelected(item, requireView().findNavController())
                 || super.onOptionsItemSelected(item)
     }
}
     class RecyclerviewAdapter() : ListAdapter<Feature, RecyclerviewAdapter.EarthquakePropertyViewHolder>(DiffCallback()) {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EarthquakePropertyViewHolder {
        return EarthquakePropertyViewHolder.from(parent)
    }

    override fun onBindViewHolder(holder: EarthquakePropertyViewHolder, position: Int) {
        val item = getItem(position)
        holder.bind(item)
    }
    class EarthquakePropertyViewHolder private constructor(val binding: EarthquakeRawBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(books: Feature) {
            binding.property = books
            binding.executePendingBindings()
        }
        companion object {
            fun from(parent: ViewGroup): EarthquakePropertyViewHolder {
                val layoutInflater = LayoutInflater.from(parent.context)
                val view = EarthquakeRawBinding.inflate(layoutInflater, parent, false)
                return EarthquakePropertyViewHolder(view)
            }
        }
    }
}

class  DiffCallback : DiffUtil.ItemCallback<Feature>() {
    override fun areItemsTheSame(oldItem: Feature, newItem: Feature): Boolean {
        return oldItem === newItem
    }
    override fun areContentsTheSame(oldItem: Feature, newItem: Feature): Boolean {
        return oldItem == newItem

    }
}
     @BindingAdapter("listData")
fun bindRecyclerView(recyclerView: RecyclerView, data: EarthquakeResponse?) {
    val adapter = recyclerView.adapter as RecyclerviewAdapter
    if (data != null) {
        adapter.submitList(data.features?.toList())
    }
}

@BindingAdapter("magnitude")
fun bindAuthor(textView: TextView, magName : Double) {
   val decimalFormat = DecimalFormat("0.0")
    val formattedMagnitude = decimalFormat.format(magName)
    textView.setText(formattedMagnitude.toString())
}

@BindingAdapter("place")
fun bindTitle(textView: TextView, titlePlace : String) {
    textView.setText(titlePlace)       
}

@BindingAdapter("time")
fun bindTime(textView: TextView, titleTime :Long) {
    val timeFormat = SimpleDateFormat("h:mm a")
    val formattedTime = timeFormat.format(titleTime)
    textView.setText(formattedTime.toString())
}

@BindingAdapter("date")
fun bindDate(textView: TextView, titleTime :Long) {
    val timeFormat = SimpleDateFormat("LLL dd, yyyy")
    val formattedDate = timeFormat.format(titleTime)
    textView.setText(formattedDate.toString())
}
class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.root_preferences, rootKey)
    }
}
概览模型

    class OverviewViewModel : ViewModel() {
      lateinit var  minMagnitude : String
     lateinit var orderBy: String
     // Internally, we use a MutableLiveData, because we will be updating the List of MarsProperty
    // with new values
    private val _properties = MutableLiveData<EarthquakeResponse> ()

    // The external LiveData interface to the property is immutable, so only this class can modify
    val properties: LiveData<EarthquakeResponse>
        get() = _properties
    init {
        getBookProperties()
    }

    private fun getBookProperties() {
        viewModelScope.launch {
            try {
                _properties.value = BookApi.retrofitService.getJson("2",
                "geojson", "10", "time")
            } catch (e : Exception) {
            }
        }
    }
}
 RelativeLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.kotlinearthquake.MainActivity"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/myNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph"
    tools:ignore="MissingClass" />
</RelativeLayout>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <data>
        <variable
            name="property"
            type="com.example.kotlinearthquake.network.Feature" />
    </data>

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="horizontal"
    android:paddingStart="16dp"
    android:paddingLeft="16dp"
    android:paddingEnd="16dp"
    android:paddingRight="16dp">

    <TextView
        android:id="@+id/magnitude"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/magnitude_circle"
        android:fontFamily="sans-serif-medium"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:magnitude="@{property.properties.mag}"
        tools:text="8.9" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/location_offset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fontFamily="sans-serif-medium"
            android:maxLines="1"
            android:textAllCaps="true"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            tools:text="30km S of\n" />

        <TextView

            android:id="@+id/primary_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            app:place="@{property.properties.place}"
            tools:text="Long placeholder that should wrap to more than 2 line of text" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:date="@{property.properties.time}"
            tools:text="Mar 6, 2010" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:time="@{property.properties.time}"
            tools:text="3:00 PM" />
    </LinearLayout>
</LinearLayout>
</layout>
    <layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="viewModel"
            type="com.example.kotlinearthquake.overview.OverviewViewModel" />
    </data>


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context = "com.example.kotlinearthquake.MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:listData="@{viewModel.properties}"
        tools:listitem="@layout/earthquake_raw"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>


    <TextView
        android:id="@+id/empty_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="?android:textAppearanceMedium"/>

    <ProgressBar
        android:id="@+id/loading_indicator"
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="40dp"
        android:layout_marginBottom="53dp"
        android:text="Setting" />

</RelativeLayout>
</layout>
    <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:defaultValue="@string/settings_order_by_default"
        android:entries="@array/settings_order_by_label"
        android:entryValues="@array/settings_order_by_value"
        android:key="@string/settings_order_by_key"
        android:title="@string/settings_order_by_label"/>

    <EditTextPreference
        android:defaultValue="@string/settings_min_magnitude_default"
        android:inputType="numberDecimal"
        android:key="@string/settings_min_magnitude_key"
        android:selectAllOnFocus="true"
        android:title="@string/settings_min_magnitude_label" />
</PreferenceScreen>
main活动

     class MainActivity : AppCompatActivity() {

    private lateinit var navController: NavController
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}
设置片段

     private const val BASE_URL = "https://earthquake.usgs.gov/fdsnws/"

// https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=5&limit=10
private val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

private val retrofit = Retrofit.Builder()
    .addConverterFactory(MoshiConverterFactory.create(moshi))
    .baseUrl(BASE_URL)
    .build()

interface EarthquakeApiService {
    @GET("event/1/query?")
    suspend fun getJson (@Query("minmag") minMagnitude : String,
     @Query("format") formatted : String, @Query("limit") limited: String,
@Query("orderby") orderBy : String) : EarthquakeResponse
}

object BookApi {
    val retrofitService : EarthquakeApiService by lazy { retrofit.create(EarthquakeApiService::class.java) }
}
data class EarthquakeResponse( val features : Array<Feature> ?)

data class Feature( val properties : Properties)

data class Properties(val mag : Double,
val place : String , val time : Long)
   class OverviewFragment : Fragment() {

     private val viewModel: OverviewViewModel by lazy {
        ViewModelProvider(this).get(OverviewViewModel::class.java)
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?): View? {
        val binding: FragmentOverviewBinding = DataBindingUtil.inflate(
            inflater, R.layout.fragment_overview, container, false)
        binding.viewModel = viewModel
        binding.recycleList.adapter = RecyclerviewAdapter()
        binding.lifecycleOwner = this
        setHasOptionsMenu(true)
        binding.button.setOnClickListener { view: View ->
            view.findNavController().navigate(R.id.action_overviewFragment_to_settingsFragment)
        }
        return binding.root
    }

     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
         inflater?.inflate(R.menu.overflow_menu, menu)
     }

     override fun onOptionsItemSelected(item: MenuItem): Boolean {
         return NavigationUI.onNavDestinationSelected(item, requireView().findNavController())
                 || super.onOptionsItemSelected(item)
     }
}
     class RecyclerviewAdapter() : ListAdapter<Feature, RecyclerviewAdapter.EarthquakePropertyViewHolder>(DiffCallback()) {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EarthquakePropertyViewHolder {
        return EarthquakePropertyViewHolder.from(parent)
    }

    override fun onBindViewHolder(holder: EarthquakePropertyViewHolder, position: Int) {
        val item = getItem(position)
        holder.bind(item)
    }
    class EarthquakePropertyViewHolder private constructor(val binding: EarthquakeRawBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(books: Feature) {
            binding.property = books
            binding.executePendingBindings()
        }
        companion object {
            fun from(parent: ViewGroup): EarthquakePropertyViewHolder {
                val layoutInflater = LayoutInflater.from(parent.context)
                val view = EarthquakeRawBinding.inflate(layoutInflater, parent, false)
                return EarthquakePropertyViewHolder(view)
            }
        }
    }
}

class  DiffCallback : DiffUtil.ItemCallback<Feature>() {
    override fun areItemsTheSame(oldItem: Feature, newItem: Feature): Boolean {
        return oldItem === newItem
    }
    override fun areContentsTheSame(oldItem: Feature, newItem: Feature): Boolean {
        return oldItem == newItem

    }
}
     @BindingAdapter("listData")
fun bindRecyclerView(recyclerView: RecyclerView, data: EarthquakeResponse?) {
    val adapter = recyclerView.adapter as RecyclerviewAdapter
    if (data != null) {
        adapter.submitList(data.features?.toList())
    }
}

@BindingAdapter("magnitude")
fun bindAuthor(textView: TextView, magName : Double) {
   val decimalFormat = DecimalFormat("0.0")
    val formattedMagnitude = decimalFormat.format(magName)
    textView.setText(formattedMagnitude.toString())
}

@BindingAdapter("place")
fun bindTitle(textView: TextView, titlePlace : String) {
    textView.setText(titlePlace)       
}

@BindingAdapter("time")
fun bindTime(textView: TextView, titleTime :Long) {
    val timeFormat = SimpleDateFormat("h:mm a")
    val formattedTime = timeFormat.format(titleTime)
    textView.setText(formattedTime.toString())
}

@BindingAdapter("date")
fun bindDate(textView: TextView, titleTime :Long) {
    val timeFormat = SimpleDateFormat("LLL dd, yyyy")
    val formattedDate = timeFormat.format(titleTime)
    textView.setText(formattedDate.toString())
}
class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.root_preferences, rootKey)
    }
}
活动\u main.xml

    class OverviewViewModel : ViewModel() {
      lateinit var  minMagnitude : String
     lateinit var orderBy: String
     // Internally, we use a MutableLiveData, because we will be updating the List of MarsProperty
    // with new values
    private val _properties = MutableLiveData<EarthquakeResponse> ()

    // The external LiveData interface to the property is immutable, so only this class can modify
    val properties: LiveData<EarthquakeResponse>
        get() = _properties
    init {
        getBookProperties()
    }

    private fun getBookProperties() {
        viewModelScope.launch {
            try {
                _properties.value = BookApi.retrofitService.getJson("2",
                "geojson", "10", "time")
            } catch (e : Exception) {
            }
        }
    }
}
 RelativeLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.kotlinearthquake.MainActivity"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/myNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph"
    tools:ignore="MissingClass" />
</RelativeLayout>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <data>
        <variable
            name="property"
            type="com.example.kotlinearthquake.network.Feature" />
    </data>

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="horizontal"
    android:paddingStart="16dp"
    android:paddingLeft="16dp"
    android:paddingEnd="16dp"
    android:paddingRight="16dp">

    <TextView
        android:id="@+id/magnitude"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/magnitude_circle"
        android:fontFamily="sans-serif-medium"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:magnitude="@{property.properties.mag}"
        tools:text="8.9" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/location_offset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fontFamily="sans-serif-medium"
            android:maxLines="1"
            android:textAllCaps="true"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            tools:text="30km S of\n" />

        <TextView

            android:id="@+id/primary_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            app:place="@{property.properties.place}"
            tools:text="Long placeholder that should wrap to more than 2 line of text" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:date="@{property.properties.time}"
            tools:text="Mar 6, 2010" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:time="@{property.properties.time}"
            tools:text="3:00 PM" />
    </LinearLayout>
</LinearLayout>
</layout>
    <layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="viewModel"
            type="com.example.kotlinearthquake.overview.OverviewViewModel" />
    </data>


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context = "com.example.kotlinearthquake.MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:listData="@{viewModel.properties}"
        tools:listitem="@layout/earthquake_raw"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>


    <TextView
        android:id="@+id/empty_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="?android:textAppearanceMedium"/>

    <ProgressBar
        android:id="@+id/loading_indicator"
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="40dp"
        android:layout_marginBottom="53dp"
        android:text="Setting" />

</RelativeLayout>
</layout>
    <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:defaultValue="@string/settings_order_by_default"
        android:entries="@array/settings_order_by_label"
        android:entryValues="@array/settings_order_by_value"
        android:key="@string/settings_order_by_key"
        android:title="@string/settings_order_by_label"/>

    <EditTextPreference
        android:defaultValue="@string/settings_min_magnitude_default"
        android:inputType="numberDecimal"
        android:key="@string/settings_min_magnitude_key"
        android:selectAllOnFocus="true"
        android:title="@string/settings_min_magnitude_label" />
</PreferenceScreen>
RelativeLayout android:layout\u width=“match\u parent”
android:layout\u height=“match\u parent”
工具:context=“com.example.kotlinearthquake.MainActivity”
xmlns:tools=”http://schemas.android.com/tools"
xmlns:android=”http://schemas.android.com/apk/res/android">
地震\u raw.xml

    class OverviewViewModel : ViewModel() {
      lateinit var  minMagnitude : String
     lateinit var orderBy: String
     // Internally, we use a MutableLiveData, because we will be updating the List of MarsProperty
    // with new values
    private val _properties = MutableLiveData<EarthquakeResponse> ()

    // The external LiveData interface to the property is immutable, so only this class can modify
    val properties: LiveData<EarthquakeResponse>
        get() = _properties
    init {
        getBookProperties()
    }

    private fun getBookProperties() {
        viewModelScope.launch {
            try {
                _properties.value = BookApi.retrofitService.getJson("2",
                "geojson", "10", "time")
            } catch (e : Exception) {
            }
        }
    }
}
 RelativeLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.kotlinearthquake.MainActivity"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/myNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph"
    tools:ignore="MissingClass" />
</RelativeLayout>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <data>
        <variable
            name="property"
            type="com.example.kotlinearthquake.network.Feature" />
    </data>

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="horizontal"
    android:paddingStart="16dp"
    android:paddingLeft="16dp"
    android:paddingEnd="16dp"
    android:paddingRight="16dp">

    <TextView
        android:id="@+id/magnitude"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/magnitude_circle"
        android:fontFamily="sans-serif-medium"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:magnitude="@{property.properties.mag}"
        tools:text="8.9" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/location_offset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fontFamily="sans-serif-medium"
            android:maxLines="1"
            android:textAllCaps="true"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            tools:text="30km S of\n" />

        <TextView

            android:id="@+id/primary_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            app:place="@{property.properties.place}"
            tools:text="Long placeholder that should wrap to more than 2 line of text" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:date="@{property.properties.time}"
            tools:text="Mar 6, 2010" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:time="@{property.properties.time}"
            tools:text="3:00 PM" />
    </LinearLayout>
</LinearLayout>
</layout>
    <layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="viewModel"
            type="com.example.kotlinearthquake.overview.OverviewViewModel" />
    </data>


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context = "com.example.kotlinearthquake.MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:listData="@{viewModel.properties}"
        tools:listitem="@layout/earthquake_raw"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>


    <TextView
        android:id="@+id/empty_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="?android:textAppearanceMedium"/>

    <ProgressBar
        android:id="@+id/loading_indicator"
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="40dp"
        android:layout_marginBottom="53dp"
        android:text="Setting" />

</RelativeLayout>
</layout>
    <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:defaultValue="@string/settings_order_by_default"
        android:entries="@array/settings_order_by_label"
        android:entryValues="@array/settings_order_by_value"
        android:key="@string/settings_order_by_key"
        android:title="@string/settings_order_by_label"/>

    <EditTextPreference
        android:defaultValue="@string/settings_min_magnitude_default"
        android:inputType="numberDecimal"
        android:key="@string/settings_min_magnitude_key"
        android:selectAllOnFocus="true"
        android:title="@string/settings_min_magnitude_label" />
</PreferenceScreen>

fragment\u overview.xml

    class OverviewViewModel : ViewModel() {
      lateinit var  minMagnitude : String
     lateinit var orderBy: String
     // Internally, we use a MutableLiveData, because we will be updating the List of MarsProperty
    // with new values
    private val _properties = MutableLiveData<EarthquakeResponse> ()

    // The external LiveData interface to the property is immutable, so only this class can modify
    val properties: LiveData<EarthquakeResponse>
        get() = _properties
    init {
        getBookProperties()
    }

    private fun getBookProperties() {
        viewModelScope.launch {
            try {
                _properties.value = BookApi.retrofitService.getJson("2",
                "geojson", "10", "time")
            } catch (e : Exception) {
            }
        }
    }
}
 RelativeLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.kotlinearthquake.MainActivity"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/myNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph"
    tools:ignore="MissingClass" />
</RelativeLayout>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <data>
        <variable
            name="property"
            type="com.example.kotlinearthquake.network.Feature" />
    </data>

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="horizontal"
    android:paddingStart="16dp"
    android:paddingLeft="16dp"
    android:paddingEnd="16dp"
    android:paddingRight="16dp">

    <TextView
        android:id="@+id/magnitude"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/magnitude_circle"
        android:fontFamily="sans-serif-medium"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:magnitude="@{property.properties.mag}"
        tools:text="8.9" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/location_offset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fontFamily="sans-serif-medium"
            android:maxLines="1"
            android:textAllCaps="true"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            tools:text="30km S of\n" />

        <TextView

            android:id="@+id/primary_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            app:place="@{property.properties.place}"
            tools:text="Long placeholder that should wrap to more than 2 line of text" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:date="@{property.properties.time}"
            tools:text="Mar 6, 2010" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:time="@{property.properties.time}"
            tools:text="3:00 PM" />
    </LinearLayout>
</LinearLayout>
</layout>
    <layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="viewModel"
            type="com.example.kotlinearthquake.overview.OverviewViewModel" />
    </data>


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context = "com.example.kotlinearthquake.MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:listData="@{viewModel.properties}"
        tools:listitem="@layout/earthquake_raw"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>


    <TextView
        android:id="@+id/empty_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="?android:textAppearanceMedium"/>

    <ProgressBar
        android:id="@+id/loading_indicator"
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="40dp"
        android:layout_marginBottom="53dp"
        android:text="Setting" />

</RelativeLayout>
</layout>
    <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:defaultValue="@string/settings_order_by_default"
        android:entries="@array/settings_order_by_label"
        android:entryValues="@array/settings_order_by_value"
        android:key="@string/settings_order_by_key"
        android:title="@string/settings_order_by_label"/>

    <EditTextPreference
        android:defaultValue="@string/settings_min_magnitude_default"
        android:inputType="numberDecimal"
        android:key="@string/settings_min_magnitude_key"
        android:selectAllOnFocus="true"
        android:title="@string/settings_min_magnitude_label" />
</PreferenceScreen>

root\u preferences.xml

    class OverviewViewModel : ViewModel() {
      lateinit var  minMagnitude : String
     lateinit var orderBy: String
     // Internally, we use a MutableLiveData, because we will be updating the List of MarsProperty
    // with new values
    private val _properties = MutableLiveData<EarthquakeResponse> ()

    // The external LiveData interface to the property is immutable, so only this class can modify
    val properties: LiveData<EarthquakeResponse>
        get() = _properties
    init {
        getBookProperties()
    }

    private fun getBookProperties() {
        viewModelScope.launch {
            try {
                _properties.value = BookApi.retrofitService.getJson("2",
                "geojson", "10", "time")
            } catch (e : Exception) {
            }
        }
    }
}
 RelativeLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.kotlinearthquake.MainActivity"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/myNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph"
    tools:ignore="MissingClass" />
</RelativeLayout>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <data>
        <variable
            name="property"
            type="com.example.kotlinearthquake.network.Feature" />
    </data>

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="horizontal"
    android:paddingStart="16dp"
    android:paddingLeft="16dp"
    android:paddingEnd="16dp"
    android:paddingRight="16dp">

    <TextView
        android:id="@+id/magnitude"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/magnitude_circle"
        android:fontFamily="sans-serif-medium"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:magnitude="@{property.properties.mag}"
        tools:text="8.9" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/location_offset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fontFamily="sans-serif-medium"
            android:maxLines="1"
            android:textAllCaps="true"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            tools:text="30km S of\n" />

        <TextView

            android:id="@+id/primary_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:textColor="@android:color/black"
            android:textSize="12sp"
            app:place="@{property.properties.place}"
            tools:text="Long placeholder that should wrap to more than 2 line of text" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:date="@{property.properties.time}"
            tools:text="Mar 6, 2010" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:textColor="@color/textColorEarthquakeDetails"
            android:textSize="12sp"
            app:time="@{property.properties.time}"
            tools:text="3:00 PM" />
    </LinearLayout>
</LinearLayout>
</layout>
    <layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="viewModel"
            type="com.example.kotlinearthquake.overview.OverviewViewModel" />
    </data>


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context = "com.example.kotlinearthquake.MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:listData="@{viewModel.properties}"
        tools:listitem="@layout/earthquake_raw"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>


    <TextView
        android:id="@+id/empty_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="?android:textAppearanceMedium"/>

    <ProgressBar
        android:id="@+id/loading_indicator"
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="40dp"
        android:layout_marginBottom="53dp"
        android:text="Setting" />

</RelativeLayout>
</layout>
    <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:defaultValue="@string/settings_order_by_default"
        android:entries="@array/settings_order_by_label"
        android:entryValues="@array/settings_order_by_value"
        android:key="@string/settings_order_by_key"
        android:title="@string/settings_order_by_label"/>

    <EditTextPreference
        android:defaultValue="@string/settings_min_magnitude_default"
        android:inputType="numberDecimal"
        android:key="@string/settings_min_magnitude_key"
        android:selectAllOnFocus="true"
        android:title="@string/settings_min_magnitude_label" />
</PreferenceScreen>

我试过了,但没有找到解决我问题的好办法。。我在过去的一个月里一直处于困境,请帮帮我,我对android和Kotlin编程还是新手