我有一个带有按钮的活动,当点击时我用片段上的另一个按钮调用片段.但是当点击片段的按钮时,我无法调用第二个片段.这是我的来源,非常简单:
activity_main.xml中:
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:orIEntation="horizontal"tools:context=".MainActivity" ><button androID:ID="@+ID/btn_click" androID:text="Call Fragment" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent" androID:onClick="onClick" /></linearLayout>
fragment1.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:background="#f0f0f0"androID:orIEntation="vertical" ><TextVIEw androID:ID="@+ID/fragment1" androID:text="Fragment 1" androID:textSize="25sp" androID:gravity="center" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent" /><button androID:ID="@+ID/btn_frag2" androID:text="Call Fragment 2" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" /></linearLayout>
fragment2.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:background="#f0f0f0"androID:orIEntation="vertical" ><TextVIEw androID:ID="@+ID/fragment2" androID:text="Fragment 2" androID:textSize="25sp" androID:gravity="center_vertical|center_horizontal" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent" /></linearLayout>
MainActivity.java
public class MainActivity extends Activity {@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main);}@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true;}public voID onClick(VIEw v) { Fragment1 fragment1 = new Fragment1(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(androID.R.ID.content, fragment1); fragmentTransaction.commit();}}
Fragment1.java
public class Fragment1 extends Fragment { @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1, container, false); } public voID onClick2(VIEw vIEw) { Fragment2 fragment2 = new Fragment2(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.ID.fragment1, fragment2); fragmentTransaction.commit(); }}
Fragment2.java
public class Fragment2 extends Fragment { @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment2, container, false); }}
我的代码有什么问题?
解决方法:
我认为现在可以使用片段嵌套来更新后面的可计算性jar
现在让我们自己挖掘问题吧.
public voID onClick2(VIEw vIEw) { Fragment2 fragment2 = new Fragment2(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.ID.fragment1, fragment2); fragmentTransaction.commit();}
我认为R.ID.fragment1属于一个TextVIEw,它不是一个包含子视图的好地方,因为它不是VIEwGroup,你可以从xml中删除textVIEw并用linearLayout替换它让我们说它会起作用,如果没有告诉我错误是什么.
fragment1.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:background="#f0f0f0"androID:orIEntation="vertical" ><linearLayout androID:ID="@+ID/fragment1" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent" /><button androID:ID="@+ID/btn_frag2" androID:text="Call Fragment 2" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" /></linearLayout>
更新评论中的错误
public class Fragment1 extends Fragment implements OnClickListener{@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { VIEw v = inflater.inflate(R.layout.fragment1, container, false);((button) v.findVIEwByID(R.ID.btn_frag2)).setonClickListener(this); return v;}public voID onClick(VIEw vIEw) { Fragment2 fragment2 = new Fragment2(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.ID.container, fragment2); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit();}}
总结 以上是内存溢出为你收集整理的android – 从片段调用片段全部内容,希望文章能够帮你解决android – 从片段调用片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)