下面是一个简单的Android项目的BaseFragment架构的示例代码:
首先,创建一个BaseFragment类,该类继承自Fragment类,用于作为所有Fragment的基类。在BaseFragment中,可以定义一些通用的方法和属性,供所有子类Fragment使用。
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public abstract class BaseFragment extends Fragment {
protected abstract int getLayoutId();
protected abstract void initView(View view);
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(getLayoutId(), container, false);
initView(view);
return view;
}
}
然后,创建一个具体的子类Fragment,继承自BaseFragment类。在子类Fragment中,可以实现具体的业务逻辑和界面展示。
public class MyFragment extends BaseFragment {
@Override
protected int getLayoutId() {
return R.layout.fragment_my;
}
@Override
protected void initView(View view) {
// 初始化界面控件
TextView textView = view.findViewById(R.id.textView);
Button button = view.findViewById(R.id.button);
// 设置点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理点击事件
Toast.makeText(getActivity(), "Button clicked", Toast.LENGTH_SHORT).show();
}
});
}
}
在MainActivity中使用这个BaseFragment架构,可以通过FragmentTransaction来动态添加和替换Fragment。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 添加MyFragment
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new MyFragment())
.commit();
}
}
上述代码中,activity_main布局文件可以包含一个用于承载Fragment的容器,例如一个FrameLayout,它的id为fragment_container。
通过上述BaseFragment架构,可以在子类Fragment中实现具体的业务逻辑和界面展示,同时可以将通用的代码提取到BaseFragment中,实现代码重用和简化。