Android 将数据从片段活动传输到片段

Android 将数据从片段活动传输到片段,android,bundle,fragment,android-fragmentactivity,Android,Bundle,Fragment,Android Fragmentactivity,我正在使用应用程序中的蓝牙服务,该服务使我能够从其他设备接收到消息。在我的FragmentActivity中,我使用一个处理程序来获取以下消息: 碎片活动: public final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { //

我正在使用应用程序中的蓝牙服务,该服务使我能够从其他设备接收到消息。在我的FragmentActivity中,我使用一个处理程序来获取以下消息:

碎片活动:

  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..
              }
        }
  }
    Intent intent = new Intent();
intent.setClass(getApplicationContext(), General.class);
Bundle bundle=new Bundle();
bundle.putInt("battery", bat);
intent.putExtra("android.intent.extra.INTENT", bundle);
我想从这个处理程序中获取一个数据并将其传输到一个片段。 我试着用bundle,但没用

我尝试的代码:

在零碎的活动中:

  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..
              }
        }
  }
    Intent intent = new Intent();
intent.setClass(getApplicationContext(), General.class);
Bundle bundle=new Bundle();
bundle.putInt("battery", bat);
intent.putExtra("android.intent.extra.INTENT", bundle);
片段:

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获取数据并将其传输到片段


感谢您的帮助

假设您需要在创建时将数据传递给片段,您可以使用setArguments将数据传递给片段,使用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();
然后在片段的onCreate方法中:

Bundle bundle=getArguments(); 
int mLabel = bundle.getInt("battery", 0);
但如果已经创建了片段,则可以在片段内创建一个方法,用于传递数据,如下所示:

fragment.setBattery(bat);

假设需要在创建时将数据传递给片段,可以使用setArguments将数据传递给片段,使用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();
然后在片段的onCreate方法中:

Bundle bundle=getArguments(); 
int mLabel = bundle.getInt("battery", 0);
但如果已经创建了片段,则可以在片段内创建一个方法,用于传递数据,如下所示:

fragment.setBattery(bat);

事实上,要获得电池数据,我必须使用我的选项菜单中的一个按钮,该按钮位于我的FragmentActivity中,用于获取连接设备的电池状态。然后在我的片段中有一个按钮,当我点击这个按钮时,我想让我的程序得到我在片段活动中得到的电池电量值。。我尝试了您的代码,但做了一些更改,但无效。我无法使用ft.addR.id.fragment\u容器,fragment;因为我还没有为我的片段定义一个id。我无法在创建时获取数据,因为我需要使用我的按钮获取此数据..Hm。。尝试在活动中存储电池数据。在FragmentActivity中有一个字段,当单击选项菜单时,该字段将存储数据。然后,当单击片段中的按钮时,读取该字段:MyActivitygetActivity.GetBatteryData是否可以使用getPreferences执行此操作?因为在我的选项菜单中,我已经在getPreferences中保存了电池数据:在我的选项菜单中,我有:getPreferencesMODE_PRIVATE.edit.putStringpassInfo,String.valueOfbat.commit;那么我可以在片段中获取这些数据吗?如果可以,那么是的,您可能可以从SharedReferences中读取If。事实上,要获取电池数据,我必须使用片段活动中的选项菜单中的按钮,该按钮可以获取连接设备的电池状态。然后在我的片段中有一个按钮,当我点击这个按钮时,我想让我的程序得到我在片段活动中得到的电池电量值。。我尝试了您的代码,但做了一些更改,但无效。我无法使用ft.addR.id.fragment\u容器,fragment;因为我还没有为我的片段定义一个id。我无法在创建时获取数据,因为我需要使用我的按钮获取此数据..Hm。。尝试在活动中存储电池数据。在FragmentActivity中有一个字段,当单击选项菜单时,该字段将存储数据。然后,当单击片段中的按钮时,读取该字段:MyActivitygetActivity.GetBatteryData是否可以使用getPreferences执行此操作?因为在我的选项菜单中,我已经在getPreferences中保存了电池数据:在我的选项菜单中,我有:getPreferencesMODE_PRIVATE.edit.putStringpassInfo,String.valueOfbat.commit;那么我可以在我的片段中得到这些数据吗?如果是的话,那么是的,您可能可以从SharedReferences中读取If。