android– 从片段调用片段

android– 从片段调用片段,第1张

概述我有一个带有按钮的活动,当点击时我用片段上的另一个按钮调用片段.但是当点击片段的按钮时,我无法调用第二个片段.这是我的来源,非常简单:activity_main.xml中:<LinearLayoutxmlns:android="http://schemas.android.com/apkes/android"xmlns:tools="http://schemas.android.co

我有一个带有按钮的活动,当点击时我用片段上的另一个按钮调用片段.但是当点击片段的按钮时,我无法调用第二个片段.这是我的来源,非常简单:
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 – 从片段调用片段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1101321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存