I have Fragment and want send data to Viewpager. I tried to use Bundle but when don't work.
NewRadioFragment --pass data--> ViewPagerActivity ( fragment PlayRadio and fragment BlogContent )
NewRadioFragment have some data and i want send to PlayRadio and from Playradio send continue to BlogContent.
If you know solution. Pls help me ! Thanks all.
And My code here :
public class NewRadioFragment extends Fragment
btnShowMore.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (item.getLink_play() != null) {
Toast.makeText(mContext, item.getLink_play(),
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(mContext,
ViewPagerActivity.class);
Bundle bundle = new Bundle();
bundle.putString(Constant.STRING_KEY, Desciption);
intent.putExtras(bundle);
startActivity(intent);
} else {
Toast.makeText(mContext, "NULL", Toast.LENGTH_SHORT).show();
}
}
});
ViewPagerActivity extends FragmentActivity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_main_activity);
setUpView();
}
public class PlayBlog extends Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.playradio_layout, container,
false);
mContext = container.getContext();
final Animation anim = AnimationUtils.loadAnimation(mContext,
R.anim.rotate);
Desciption = getArguments().getString(Constant.STRING_KEY);
Log.i("", Constant.TAG + Desciption);
ImageView splash = (ImageView) rootView.findViewById(R.id.base);
TextView tvDesciption = (TextView) rootView
.findViewById(R.id.tv_Marquee);
tvDesciption.setText(Desciption);
splash.startAnimation(anim);
return rootView;
}
UPDATE CODE
I edit my code but NullPoiterException public class ViewPagerActivity extends FragmentActivity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_main_activity);
Intent intent = getIntent();
Bundle args = intent.getExtras();
Fragment playRadio = new PlayBlog();
playRadio.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.replace(R.id.pager, playRadio);
transaction.commit();
setUpView();
}
And public class PlayBlog extends Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.playradio_layout, container,
false);
mContext = container.getContext();
final Animation anim = AnimationUtils.loadAnimation(mContext,
R.anim.rotate);
Desciption = getArguments().getString(Constant.STRING_KEY);
Log.i("", Constant.TAG + Desciption);
ImageView splash = (ImageView) rootView.findViewById(R.id.base);
TextView tvDesciption = (TextView) rootView
.findViewById(R.id.tv_Marquee);
tvDesciption.setText(Desciption);
splash.startAnimation(anim);
return rootView;
}
Update 2
Logcat Error
02-06 06:14:39.980: E/AndroidRuntime(1790): FATAL EXCEPTION: main
02-06 06:14:39.980: E/AndroidRuntime(1790): java.lang.NullPointerException
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.tadev.blogradio.main.PlayBlog.onCreateView(PlayBlog.java:36)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.View.measure(View.java:15518)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.View.measure(View.java:15518)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.View.measure(View.java:15518)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.View.measure(View.java:15518)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 06:14:39.980: E/AndroidRuntime(1790): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.View.measure(View.java:15518)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.Choreographer.doFrame(Choreographer.java:532)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.os.Handler.handleCallback(Handler.java:725)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.os.Handler.dispatchMessage(Handler.java:92)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.os.Looper.loop(Looper.java:137)
02-06 06:14:39.980: E/AndroidRuntime(1790): at android.app.ActivityThread.main(ActivityThread.java:5041)
02-06 06:14:39.980: E/AndroidRuntime(1790): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 06:14:39.980: E/AndroidRuntime(1790): at java.lang.reflect.Method.invoke(Method.java:511)
02-06 06:14:39.980: E/AndroidRuntime(1790): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-06 06:14:39.980: E/AndroidRuntime(1790): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-06 06:14:39.980: E/AndroidRuntime(1790): at dalvik.system.NativeStart.main(Native Method)
To Pass data from NewRadioFragment
to PlayBlog
you first need to send Bundle to ViewPagerActivity
using putExtras
then call setArguments
for PlayBlog
method where you are calling add or replcase
method for showing PlayBlog
fragment in ViewPagerActivity
Activity.
On btnShowMore
Button click send Bundle in Intent:
Intent intent = new Intent(mContext,
ViewPagerActivity.class);
Bundle bundle = new Bundle();
bundle.putString(Constant.STRING_KEY, Desciption);
intent.putExtras(bundle);
startActivity(intent);
In ViewPagerActivity
get Bundle using getIntent
and call setArguments
method to send bundle to fragment :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_main_activity);
Intent intent=getIntent();
Bundle bundle = intent.getExtras();
Now pass bundle
Bundle to PlayBlog
Fragment
You have to use interface to send datas to its container
Exemple here (last reply) : Passing data between a fragment and its container activity
Edit : i need more code to send you good example and understand why your fragment start your pager
in NewRadioFragment declare an interface like this
// Container Activity must implement this interface
public interface Onpassdata // name not fixed
{
public void start(String T, int ID);
}
declare a member : private Onpassdata mCallback;
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (Onpassdata) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement Onpassdata");
}
}
btnShowMore.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (item.getLink_play() != null) {
Toast.makeText(mContext, item.getLink_play(),
Toast.LENGTH_SHORT).show();
start(Desciption, id);
} else {
Toast.makeText(mContext, "NULL", Toast.LENGTH_SHORT).show();
}
}
});
in pour ViewPagerActivity
public ViewPagerActivity extends FragmentActivity
implements NewRadioFragment.Onpassdata
{
public void start(String T, int ID) {
// do something whith values
// and you can Start your BlogContent fragment here
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.