Android将数据从一个片段传递到另一个片段
我想将数据从一个片段传递到B片段。。然后B片段变成A片段。但当我把A传给B时,它是完美的。但当我把B传递给A时,它会给我nullpointexception 我的代码在这里, 一块碎片Android将数据从一个片段传递到另一个片段,android,fragment,Android,Fragment,我想将数据从一个片段传递到B片段。。然后B片段变成A片段。但当我把A传给B时,它是完美的。但当我把B传递给A时,它会给我nullpointexception 我的代码在这里, 一块碎片 public static PlayRadioFragment newInstance(String url, String name, String value) { Bundle args = new Bundle(); args.putString(URL, url); args.p
public static PlayRadioFragment newInstance(String url, String name, String value) {
Bundle args = new Bundle();
args.putString(URL, url);
args.putString(NAME, name);
args.putString(VALUE, value);
PlayRadioFragment fragment = new PlayRadioFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.play_radio, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
try {
url = getArguments().getString(URL);
if (url.length() > 0) {
url_string = getArguments().getString(URL);
name_string = getArguments().getString(NAME);
image_url = getArguments().getString(VALUE);
value = getArguments().getString(VALUE);
name.setText(name_string);
Log.e("url", url_string);
Log.e("name", name_string);
playRadio();
image = (ImageView) getView().findViewById(R.id.imageView);
if (image_url.length() != 0) {
Picasso.with(getActivity()).load(image_url).fit()
.tag(this).into(image);
}
} else {
try {
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(package_name.trim().getBytes());
byte messageDigest[] = digest.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++)
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
getRadioChannelList(hexString.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (NullPointerException e) {
try {
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(package_name.trim().getBytes());
byte messageDigest[] = digest.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++)
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
getRadioChannelList(hexString.toString());
} catch (NoSuchAlgorithmException e2) {
e.printStackTrace();
} catch (JSONException e2) {
e.printStackTrace();
}
e.printStackTrace();
}
actionPlayStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (url_string.length() > 0) {
Intent intent = new Intent(getActivity(),
RadioService.class);
if (mRadioService != null) {
getActivity().stopService(intent);
unBindMyService();
} else {
playRadio();
}
}
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Intent i=new Intent(getActivity(),
PreferenceActivity.class);
startActivity(i);
break;
case R.id.radio_list:
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(channelList,
new TypeToken<List<ChannelPojo>>() {
}.getType());
((MainActivity2) getActivity()).changeFragment(new MainFragment().newInstance(element.getAsJsonArray()
.toString(), value));
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
但我无法理解从B传递到碎片有什么问题。请帮帮我。。谢谢。我认为这条线路有问题:
changeFragment(new PlayRadioFragment()); // do not initialize fragment like this
遵循您的片段结构,我认为无论何时您想要创建片段实例,请使用此代码来启动它
MainFragment mainFragment = MainFragment.newInstance("url", "value");
谢谢。试试这个
- 在每个片段中创建接口
- 在每个接口中,使用数据
- 在活动类中实现这两个接口李>
- 在每个重写的方法中,将值传递给每个片段
changeFragment(new PlayRadioFragment()); // do not initialize fragment like this
MainFragment mainFragment = MainFragment.newInstance("url", "value");