【问题标题】:update a textview in a fragment from a fragmentActivity从 fragmentActivity 更新片段中的文本视图
【发布时间】:2015-05-22 10:20:10
【问题描述】:

我正在从蓝牙流中读取数据,当我读取的字符串是温度值时,我想将文本视图更新为该值。 问题是我从片段活动中读取数据,而我的文本视图在片段内。 谁能帮帮我?

这是我收集蓝牙数据的代码(实际收集被省略了)

public class ListResult extends FragmentActivity implements SearchResult.OnSearchResultSelectedListener {
ProgressDialog pd;

RecipeInstructions instructions = new RecipeInstructions();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);

    ...

            mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                byte[] writeBuf = (byte[]) msg.obj;
                int begin = (int)msg.arg1;
                int end = (int)msg.arg2;
                String writeMessage;
                switch(msg.what) {
                    case 1:
                        /*
                        check the bluetooth message, which is sent by the Arduino bluetooth module
                        depending on the message different tasks will be executed
                        the swipe gestures, the temperature sensor, the weigh scale
                        */
                        writeMessage = new String(writeBuf);
                        writeMessage = writeMessage.substring(begin, end);
                        int position = pager.getCurrentItem();
                        Log.e("BLUETOOTH", writeMessage);
                        if(writeMessage.contains("RIGHT")) {
                            Log.e("SCROLL", "if function");
                            index = position -1;
                            scroll();
                        }
                        else if(writeMessage.contains("LEFT")) {
                            Log.e("SCROLL", "if function");
                            index = position +1;
                            scroll();
                        }
                        else if(writeMessage.contains("Temperature")) {
                            setTemp(writeMessage);
                        }
                        break;
                }
            }
        };

}

public void setTemp(String message){
    String value = message.substring(message.lastIndexOf(" ")+1, message.length());
    instructions.setTemp(value + "°C");
}

这是我的片段

public class RecipeInstructions extends Fragment {
LinearLayout ll;
RelativeLayout ll1;
TextView textview;
TextView desc;
ImageView imgview;
ImageView temp;
TextView tempValue;
ScrollView scroll;
String temperature;


@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_ing_check, container, false);

    ...

    tempValue = (TextView) v.findViewById(R.id.tempValue);
    tempValue.setVisibility(View.VISIBLE);

    new ImageDownloader(imgview).execute( createNewUrl(((ListResult) getActivity()).getUrl()));

    return v;
}

public void setTemp(String temperature){
    tempValue.setText(temperature);
    Log.e("TEMP", "t= " + this.temperature);
}

【问题讨论】:

    标签: android textview fragment android-fragmentactivity


    【解决方案1】:

    尝试使用

    获取activity中的fragment实例
      fragment=  fragmentManager.findFragmentById (fragmentId);
    

      fragment=  fragmentManager.findFragmentByTag (FragmentTag);
    

    现在您可以将数据设置到片段内的 TextView 中。

    ((RecipeInstructions)fragment).setData(data);
    

    Fragment中实现方法setData

    public class RecipeInstructions extends Fragment {
    // ....
    public void setData(String data){
    textView.setText(data);
    }
    // .....
    

    【讨论】:

    • 我的片段类使用简单的布局,我没有片段的 id 或标签(我想,这对我来说是新的)
    • 片段的标签是在将片段添加到片段管理器时给出的,例如 fragmentTransaction.add(fragment,TAG);其中 fragmentId 是片段附加到的容器的 ID。 developer.android.com/reference/android/app/…, java.lang.String)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多