【问题标题】:setText within Fragment not updating片段中的setText不更新
【发布时间】:2016-06-04 04:12:20
【问题描述】:

我目前正在尝试清除片段中的传感器值,这些值会不断更新,但是我设置的清除按钮没有任何作用,即使我已暂停传感器。 我是否正确设置了 onViewCreated?

我还尝试在 onCreateView 中设置文本视图,但没有成功。 当我按下清除按钮时,我没有收到任何错误,只是没有清除值。

任何指针将不胜感激!

public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    mPitchView = (TextView)view.findViewById(R.id.textView4);
    mRollView = (TextView)view.findViewById(R.id.textView5);
    mAzimuthView = (TextView)view.findViewById(R.id.textView6);
    mRadioGroup = (RadioGroup) view.findViewById(R.id.radioGroup);
    mRadioGroup.setOnCheckedChangeListener(this);

    view.findViewById(R.id.button_clear).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            onClear();

        }
    });   
}


public void onClear(){


    mPitchView.setText("");
    mRollView.setText("");
    mAzimuthView.setText("");
}

我还有另外两个按钮启动和停止,它们工作得很好。 我认为问题在于 textview 没有更新。

【问题讨论】:

  • 记录你的onclick以查看logcat中是否有输出
  • 尝试在 onViewCreated 方法之外初始化 mPitchViewmRollView 等。同样在 onClear() 方法内部尝试设置mPitchView.getText().clear();
  • 老实说,这段代码看起来不错。您确定您为视图使用了正确的 ID 吗?
  • 您是否尝试在 onClear() 方法上放置断点并检查它是否被命中?
  • @cole 对于片段,我想我必须初始化方法内的视图?如果我错了纠正我。 @板球是的,我确定。 @Lichader 是的,我已经尝试过了,正在点击按钮并调用方法。

标签: java android button fragment settext


【解决方案1】:
use  Handler     

 Handler txtsettext = new Handler(Looper.getMainLooper());
                            txtsettext.post(new Runnable() {
                                public void run() {
                                   mPitchView.setText("");
                                   mRollView.setText("");
                                   mAzimuthView.setText("");   

                                }
                            });

【讨论】:

  • 嗨,对不起,我对处理程序的概念比较陌生,我该如何将它合并到我的代码中?
  • public void onClear(){ Handler txtsettext = new Handler(Looper.getMainLooper()); txtsettext.post(new Runnable() { public void run() { mPitchView.setText(""); mRollView.setText(""); mAzimuthView.setText(""); } }); }
  • 又试了一次,现在可以工作了,结果发现有一个runnable导致显示器不断更新最后的传感器结果。我的错。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多