gpt4 book ai didi

android - 将数据从 Fragment Activity 传输到 Fragment

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:22 25 4
gpt4 key购买 nike

我在我的应用程序中使用蓝牙服务,它使我能够从另一台设备接收到消息。在我的 FragmentActivity 中,我使用处理程序来获取此消息:

fragment Activity :

  public final Handler mHandler = new Handler() {

@Override
public void handleMessage(Message msg) {
switch (msg.what) {

//my code

case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
byte[] alpha = null;
alpha=readBuf;

if(alpha!=null){
//my code..
}
}
}

我想从这个 Handler 获取数据并将其传输到 Fragment。我尝试使用 bundle 但它不起作用..

我试过的代码:

在 fragment Activity 中:

    Intent intent = new Intent();
intent.setClass(getApplicationContext(), General.class);
Bundle bundle=new Bundle();
bundle.putInt("battery", bat);
intent.putExtra("android.intent.extra.INTENT", bundle);

在 fragment 中:

Bundle bundle = getActivity().getIntent().getExtras();
if (bundle != null) {
int mLabel = bundle.getInt("battery", 0);
Toast.makeText(getActivity(), "tottiti: "+mLabel, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getActivity(), "prout", Toast.LENGTH_SHORT).show();
}

应用程序正在返回“prout”,这意味着它无法从我的 FragmentActivity 获取我的数据。

有没有其他方法可以从 fragmentActivity 获取数据并将其传输到 fragment ?

谢谢你的帮助

最佳答案

假设您需要在创建时将数据传递给 fragment ,您可以使用 setArguments() 将数据传递给 fragment ,并使用 getArguments() 读取那个数据。

Bundle bundle = new Bundle();
bundle.putInt("battery", bat);
MyFragment fragment=new MyFragment();
fragment.setArguments(bundle);

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragment_container,fragment);
ft.commit();

然后在 fragment 的onCreate()方法中:

Bundle bundle=getArguments(); 
int mLabel = bundle.getInt("battery", 0);

但如果 fragment 已经创建,那么您可以在 fragment 内创建一个方法来传递数据,如下所示:

fragment.setBattery(bat);

关于android - 将数据从 Fragment Activity 传输到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875804/

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