gpt4 book ai didi

java - fragment 中缺少 TextView 数据(文本)

转载 作者:行者123 更新时间:2023-11-29 23:49:22 25 4
gpt4 key购买 nike

我在 Fragment A 中有一些 edittexts 和 textview。我使用 edittexts 从用户那里获取值,然后根据我的公式计算并将结果显示在 textview 中。

例如 Edittext A 有 1,Edittext B 有 2,我的公式是 add 所以 textview 将显示结果为 3。

此外,还有一个按钮, fragment A 的信息。单击此按钮时,将使用以下代码显示一个新的 fragment B:

FragmentTransaction fragmentTransaction = 
fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.contentFrag, fragment);
fragmentTransaction.addToBackStack(backStackStateName);
fragmentTransaction.commit();

现在,当我按下后退按钮时,我让系统调用 super.onBackPressed() 以便删除当前 fragment B 并返回 fragment A。

我的问题:

现在 edittexts 保留了它们的所有值,但是我计算并显示在 TextViews 上的值消失了。

我检查了 onViewStateRestored(Bundle savedInstanceState) 方法,但是参数 savedInstanceState 为空。

我的问题:

如何保存/检索我的 TextView 的值?

我在哪里可以再次调用计算 TextView 数据的代码??

最佳答案

要解决此问题,您需要使用一些数据层,例如共享首选项或 SQL 存储。它以某种原始的方式看起来像:

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

return inflater?.inflate(R.layout.fragment_blank, container, false)

//update you UI from local STORAGE on create
textView.text = sharedPreference.getInt("result_data", 0).toString()//make request local for date


//calling your calculation
button.setOnClickListener {

calculateData(dataInput, object : Callback {
override fun onCalculated() {

//update you UI from local STORAGE layer in MAIN THREAD
Handler(Looper.getMainLooper()).post {
textView.text = sharedPreference.getInt(
"result_data",0
).toString()
}
}

})
}
}

//you calculate and request to data layer

private fun calculateData(inPutData:Int, callback:Callback){

//use background for calculate It will be available.
Thread{

//calculate
val result = inPutData+ ARG_PARAM

//save result in LOCAL STORAGE
sharedPreference.edit().putInt( " result", result).apply()

//update UI
callback.onCalculated()

}.start()

}

interface Callback{
fun onCalculated()

}

还要考虑 MVP 和 Presenter。它也是可用的。在开源中,您可以找到名为 moxy 的惊人 MVP 库.它可以恢复您的 View 状态。

关于java - fragment 中缺少 TextView 数据(文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51070629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com