android studio使用Fragment点击不同按钮切换不同界面
在Android Studio中创建Module,在该module中实现本实例,具体步骤如下:
(1)在新建的module的res/layout目录下面添加布局文件activeity_miana.xml。将局部管理器设置为相对布局管理器(我一开始没有设置为相对布局管理器,然后这个容器就没有设置边界,所以它默认位置(0,0)放置。)并将TextView组件删除,然后在布局管理器中添加一个Fragment组件,并为其设置ID属性,在Fragment组件下方再添加一个水平线性布局管理器,并设置其显示在容器底部,最后在水平线性布局管理器中添加布局宽度相同的ImageView,将它们的layout_weight属性均设置为1。具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.mingrisoft.tabfragment.MainActivity">
<fragment
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.mingrisoft.tabfragment.ErShiSi_Fragment"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/image1"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/ershisi" />
<ImageView
android:id="@+id/image2"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/faxian" />
<ImageView
android:id="@+id/image3"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/wo" />
</LinearLayout>
</RelativeLayout>
(2)在res/layout目录下创建一个布局文件faxian_fragment.xml,并且将默认创建的线性布局管理器修改为相对布局管理器。然后在该布局文件中添加一个ImageView组件,用于存放要显示的图片。具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/faxian1"
android:scaleType="fitXY"/>
</RelativeLayout>
(3)在工具窗中的Java节点的第一个com.mingrisoft包中,创建一个FanXian_Fragment的类,让这个类继承Fragment类,并且重写onCreateView()方法,然后为FanXianFragment添加faxian_fragment.xml布局文件,具体代码如下:
package com.mingrisoft.tabfragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by Administrator on 2022/3/18.
*/
public class FaXian_Fragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.faxian_fragment,null);
return view;
}
}
参照步骤(2)和(3),再创建几个Fragment类和几个相对应的布局文件,分布用于实现其他界面。
(4)打开默认创建的MainActivity,让MainActivity直接继承Activity,获取布局文件中的Tab标签图片,并且为每一张图片设计单击事件监听器,然后通过switch语句判断单击哪张导航图片,并创建相应的Fragment替换原有的Fragment,具体代码如下:
package com.mingrisoft.tabfragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activeity_miana);
ImageView imageView1 = (ImageView) findViewById(R.id.image1);
ImageView imageView2 = (ImageView) findViewById(R.id.image2);
ImageView imageView3 = (ImageView) findViewById(R.id.image3);
imageView1.setOnClickListener(l);
imageView2.setOnClickListener(l);
imageView3.setOnClickListener(l);
}
View.OnClickListener l=new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
Fragment f=null;
switch (view.getId()){
case R.id.image1:
f=new ErShiSi_Fragment();
break;
case R.id.image2:
f=new FaXian_Fragment();
break;
case R.id.image3:
f=new Wo_Fragment();
break;
default:
break;
}
ft.replace(R.id.fragment,f);
ft.commit();
}
};
}
初学者,还有很多需要完善的地方。发现不足之处,望谅解。也希望大家给出更好的想法。谢谢!