Actividad de fragmentos Comunicación de fragmentos
Yo tengo unActividad con dos fragmentos (Frag1, Frag2).
EnFrag1, Yo tengo unEditar texto.
Mientras enFrag2, Tengo unBotón yVista de texto.
Lo que estoy tratando de hacer es que todo lo que escribí en el texto de edición aparecerá en la vista de texto cuando haga clic en el botón. Aquí está mi código pero no funciona porque mi aplicación falla cuando intento ejecutarlo:
Frag1:
public class Frag1 extends Fragment {
EditText edit1;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frag2, container, false);
edit1 = (EditText) getActivity().findViewById(R.id.edit_1);
String str = edit1.getText().toString();
Intent intent = new Intent(getActivity().getBaseContext(),
MainActivity.class);
intent.putExtra("message", str);
getActivity().startActivity(intent);
return v;
}
}
Actividad:
public class MainActivity extends FragmentActivity{
ViewPager viewPager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(new MyAdapter(fragmentManager));
Intent intent = getIntent();
String message = intent.getStringExtra("message");
Bundle bundle=new Bundle();
bundle.putString("message", message);
Frag2 fragobj=new Frag2();
fragobj.setArguments(bundle);
}
public class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter (FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
if (i == 0)
{
fragment = new Frag1();
}
if (i == 1)
{
fragment = new Frag2();
}
return fragment;
}
@Override
public int getCount() {
return 2;
}
}
}
Frag2:
public class Frag2 extends Fragment implements OnClickListener {
Button button1;
TextView text1;
String strtext;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frag2, container, false);
button1 = (Button) getActivity().findViewById(R.id.button1);
button1.setOnClickListener(this);
text1 = (TextView) getActivity().findViewById(R.id.text1);
strtext=getArguments().getString("message");
return v;
}
@Override
public void onClick(View arg0) {
text1.setText(strtext);
}
}
LogCat:
12-01 02:47:22.763: D/jdwp(4115): sendBufferedRequest : len=0x31
12-01 02:47:22.769: W/asset(4115): AssetManager-->addDefaultAssets CIP path not exsit!
12-01 02:47:23.061: V/PhoneWindow(4115): DecorView setVisiblity: visibility = 4
12-01 02:47:23.084: V/PhoneWindow(4115): DecorView setVisiblity: visibility = 0
12-01 02:47:23.160: D/AndroidRuntime(4115): Shutting down VM
12-01 02:47:23.160: W/dalvikvm(4115): threadid=1: thread exiting with uncaught exception (group=0x40d819a8)
12-01 02:47:23.178: E/AndroidRuntime(4115): FATAL EXCEPTION: main
12-01 02:47:23.178: E/AndroidRuntime(4115): java.lang.NullPointerException
12-01 02:47:23.178: E/AndroidRuntime(4115): at lmf.sample5.Frag1.onCreateView(Frag1.java:21)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.View.measure(View.java:15635)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.View.measure(View.java:15635)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.widget.LinearLayout.measureVertical(LinearLayout.java:850)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.View.measure(View.java:15635)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-01 02:47:23.178: E/AndroidRuntime(4115): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2200)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.View.measure(View.java:15635)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4872)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.Choreographer.doCallbacks(Choreographer.java:579)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.Choreographer.doFrame(Choreographer.java:548)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.os.Handler.handleCallback(Handler.java:800)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.os.Handler.dispatchMessage(Handler.java:100)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.os.Looper.loop(Looper.java:194)
12-01 02:47:23.178: E/AndroidRuntime(4115): at android.app.ActivityThread.main(ActivityThread.java:5371)
12-01 02:47:23.178: E/AndroidRuntime(4115): at java.lang.reflect.Method.invokeNative(Native Method)
12-01 02:47:23.178: E/AndroidRuntime(4115): at java.lang.reflect.Method.invoke(Method.java:525)
12-01 02:47:23.178: E/AndroidRuntime(4115): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
12-01 02:47:23.178: E/AndroidRuntime(4115): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
12-01 02:47:23.178: E/AndroidRuntime(4115): at dalvik.system.NativeStart.main(Native Method)