Как мне прочитать данные во фрагмент в kotlin? sharedpreferance - PullRequest
0 голосов
/ 29 февраля 2020

Итак, я собираюсь взять некоторые данные, которые я записываю в файл в задании, и я хочу, чтобы они отображались в моем фрагменте в моем первом задании. Я новичок в Kotlin и только что узнал, что не могу использовать один и тот же синтаксис во фрагментах.

Я хочу использовать sharedpreferance.

Моя основная активность выглядит следующим образом и отлично работает:

private lateinit var sharedPreferences: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        btnSaveEvent.setOnClickListener {
            val intent = Intent(this, MainActivity::class.java)
            startActivity(intent)

            // Create a shared preference instance
            sharedPreferences = getSharedPreferences("com.example.gifttracker", Context.MODE_PRIVATE)


            // create editor and add the key value pair to the preference
            val editor = sharedPreferences.edit()
            editor.putString("KEY_STR", editText2.text.toString())
            editor.apply()

            //Read from file into a Toast to check that it saved
            val str = sharedPreferences.getString("KEY_STR", null)
            Toast.makeText(this, str, Toast.LENGTH_LONG).show()

        }

    }

Мой фрагмент не так хорош и выглядит так:

private var sharedPreferences = this.activity!!.getSharedPreferences("com.example.gifttracker", Context.MODE_PRIVATE)

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        // Inflate the layout for this fragment
        val view: View = inflater.inflate(R.layout.fragment_frag1, container, false)

        view.btnAddEvent.setOnClickListener {
            requireActivity().startActivity(
                Intent(requireActivity(), Main2Activity::class.java)
            )
        }

        val str = sharedPreferences.getString("KEY_STR", null)
        textView2.text = str

        return view
    }

** Обратите внимание, это вызывает сбой моего приложения ** Это связано с тем, что textView2 имеет значение null, и я не знаю, почему

Я просто хочу читать из файла, который я создал, и составить его список

Заранее спасибо

1 Ответ

0 голосов
/ 01 марта 2020

Используйте

val txt2 = view.findViewById(R.id.textView2)
txt2.text = str

вместо textView2.text = str Также textView2 должен быть внутри вашего R.layout.fragment_frag1

...