troytan7 2019-06-14 11:45 采纳率: 100%
浏览 692
已采纳

activity点击跳转并传参数到fragment如何修改fragment中的控件为传递过来的参数

我自己写了一个方法来传递参数的,目的是要修改控件的值
activity 代码部分
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)));

        }
    }
};


    Dialogfragment 部分
     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);
}

    我能打印到定时器传过来的数据
    但只要我加上tx2.setText(string)就报错
  • 写回答

2条回答 默认 最新

  • Jimmy_buer 2019-06-14 15:33
    关注

    setData2方法是在线程中执行的. ui的绘制不能在线程中执行.
    tx2.setText(string);
    写在写线程即可解决.
    new Handler.post(new runable(){
    ***
    tx2.setText(string);

    }

    或者使用activity.runonuithread

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题