gpt4 book ai didi

java - 如何修复Android中的 ‘textview data ’错误

转载 作者:行者123 更新时间:2023-12-02 04:30:19 24 4
gpt4 key购买 nike

我想添加随机数以放在从计时器 Activity 获取的Dialogfragment中的textview上;

我多次尝试改变

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt_v=(TextView)findViewById(R.id.hello);
txtv_2=(TextView)findViewById(R.id.textV_2);
btn_str=(Button)findViewById(R.id.btn_give_str);

dia=new DiagFragment();

nBtb=(Button)findViewById(R.id.bt);
nBtb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

dia.show(MainActivity.this.getSupportFragmentManager(), null);
}
});


timer.schedule(task, 1000, 5000);


}

TimerTask task = new TimerTask() {
public void run() {
if (dia!=null){

((DiagFragment) dia).setData2(String.valueOf((Math.random() * 10)));

}
}
};


public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.list_dialog,null);
mContext=getActivity();

initView(view);

return view;
}


public void initView(View view){
tx1=(TextView)view.findViewById(R.id.tv_1);
tx2=(TextView)view.findViewById(R.id.txv_2);

}



public void setData2(String string) {

str2=string;
Log.w(TAG, "setData2: "+string );
tx2.setText(string);

}

我可以获取diafragment上的数据,但是当我将数据添加到TextVIew (tx2)时出现错误

错误消息是:

   java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.soundgil.dailogonclicklistend.DiagFragment.setData2(DiagFragment.java:68)
at com.soundgil.dailogonclicklistend.MainActivity$2.run(MainActivity.java:54)

最佳答案

似乎没有正确找到tx2,因此它为空。尝试检查布局 xml(您的 View ID 正确吗?)或将其放上来。

顺便说一句,TimerTask.run() 是在子线程中运行的,因此您无法更新 UI。 UI必须在主线程中操作。尝试使用这样的处理程序:

Handler handler = new Handler(){
public void handleMessage(Message message){
if (message.what == 0 && dia!=null){
((DiagFragment) dia).setData2(String.valueOf((Math.random() * 10)));
}
}
};

TimerTask task = new TimerTask() {
public void run() {
handler.sendEmptyMessage(0);
}
};

关于java - 如何修复Android中的 ‘textview data ’错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590863/

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