Loading

Android学习-Fragment初视

今天有学习了一个安卓中重要的内容,Fragment

Fragment 可以做到把屏幕划分成几块,然后进行分组,进行模块化的管理。并且可以更加方便的在运行过程中动态地更新Activity的用户界面

Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,

比如Activity 被destory销毁了,Fragment也会跟着销毁。

展示一下我现在做出的效果,可以看到,在屏幕中央有一个“ I am AFragment ”,点击“更换”按钮,变成了“I am BFragment”  !!

 

 在实际应用中肯定会比这个复杂的多,但是这已经实现了其基本功能,基于这些我们可以做出更有用的效果!

代码实现

 ContainerActivity

package com.example.testapplication.fragment;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.testapplication.R;
public class ContainerActivity extends AppCompatActivity {

    private AFragment aFragment;
    private BFragment bFragment;
    private Button mBtnChange;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_container);
        mBtnChange = (Button) findViewById(R.id.btn_change);
        mBtnChange.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (bFragment == null){
                    bFragment = new BFragment();
                }
                getSupportFragmentManager().beginTransaction().replace(R.id.fl_container,bFragment).commitAllowingStateLoss();
            }
        });

        //实例化
        aFragment = new AFragment();
        //把aFragment添加到Activity中
        getSupportFragmentManager().beginTransaction().add(R.id.fl_container,aFragment).commitNowAllowingStateLoss();
    }
}

AFragment

package com.example.testapplication.fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.testapplication.R;

public class AFragment extends Fragment {

    private TextView mTvTitle;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_a,container,false);
        return view;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mTvTitle= (TextView) view.findViewById(R.id.tv_title);


    }
}

BFragment

package com.example.testapplication.fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;


import com.example.testapplication.R;

public class BFragment extends Fragment {

    private TextView mTvTitle;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_b,container,false);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mTvTitle= (TextView) view.findViewById(R.id.tv_title2);


    }
}

MainActivity

package com.example.testapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.testapplication.fragment.ContainerActivity;
import com.example.testapplication.listview.ListViewActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn_listview,btn_fragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_listview = (Button) findViewById(R.id.btn_listview);
        btn_listview.setOnClickListener(this);

        btn_fragment = (Button) findViewById(R.id.btn_fragment);
        btn_fragment.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

        Intent intent = null;
        switch (view.getId()){
            case R.id.btn_fragment:
                intent = new Intent(this, ContainerActivity.class);
                startActivity(intent);
                break;
            case R.id.btn_listview:
                intent = new Intent(this, ListViewActivity.class);
                startActivity(intent);
        }



    }

}

 

posted @ 2023-03-05 18:09  冰稀饭Aurora  阅读(20)  评论(0编辑  收藏  举报