gpt4 book ai didi

android - 将 fragment 1 切换到 fragment 2

转载 作者:行者123 更新时间:2023-11-30 02:54:05 25 4
gpt4 key购买 nike

大家好,我有一个带按钮的 fragment 。单击按钮时我想打开 fragment2。什么是最好的解决方案?你能举个例子吗?在 XML fragment 1 中:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="116dp"
android:background="#0000"
android:drawableTop="@drawable/autobus"
android:onClick="OPENFRAGMENT"
android:text="ooo" />

在 fragment 1中:

public class Fragment1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View info = inflater.inflate(R.layout.info, container, false);

return info;
}

public void OPENFRAGMENT(View view)
{

}

在 fragment 2中:

public class Fragment2 extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View frag = inflater.inflate(R.layout.frag2, container, false);
return frag;
}
}

主要 Activity :

 public class MainActivity extends SherlockFragmentActivity  {


ViewPager Tab;
TabPagerAdapter TabAdapter;
ActionBar actionBar;
public boolean StatusConnection = false;
public int thread = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
Tab = (ViewPager)findViewById(R.id.pager);
Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(
position);
Tab.setCurrentItem(position);
}

});
Tab.setAdapter(TabAdapter);

actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener(){

@Override
public void onTabReselected(ActionBar.Tab arg0,FragmentTransaction arg1) {
// TODO Auto-generated method stub

}
@Override
public void onTabSelected(ActionBar.Tab arg0,FragmentTransaction arg1) {
// TODO Auto-generated method stub
Tab.setCurrentItem(arg0.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab arg0,FragmentTransaction arg1) {
// TODO Auto-generated method stub

}
};

actionBar.addTab(actionBar.newTab().setText("A").setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("B").setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("C").setTabListener(tabListener));

@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
return new Info();
case 1:
return new B();
case 2:
return new C();

activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

提前致谢!

最佳答案

首先,您必须使用以下代码从第一个 fragment 上的按钮获取 View :

btnChFrag = info.findViewById(R.id.button1);

(信息是您的 fragment 布局的 View )

然后你需要在那个按钮上设置onclicklistener

btnChFrag.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Fragment2 newFragment = new Fragment2();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, newFragment);
ft.commit();
}

在 MainActivity View 中将 R.id.container 更改为您的容器

因此您在 fragment1 上的代码将是:

public class Fragment1 extends Fragment {

private Button btnChFrag

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View info = inflater.inflate(R.layout.info, container, false);
btnChFrag = info.findViewById(R.id.button1);
//set button onclicklistener here

return info;
}

-----编辑------

对不起,我完全忘了你想用按钮来做,我的错

这是fragment1的代码

public class Fragment1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View info = inflater.inflate(R.layout.info, container, false);


Button btn1 = (Button)rootView.findViewById(R.id.button1);

btn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
((MainActivity)Fragment1.this.getActivity()).Tab.setCurrentItem(2);
}
});
return info;
}

试过了,确实有效:)

关于android - 将 fragment 1 切换到 fragment 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23621279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com