Android 将数据从片段活动传输到片段
我正在使用应用程序中的蓝牙服务,该服务使我能够从其他设备接收到消息。在我的FragmentActivity中,我使用一个处理程序来获取以下消息: 碎片活动: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) { //
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。