Android Fragment和逻辑应用设计

标签 android android-fragments

这更像是一个设计问题,以及人们将如何设计应用程序。我一直在玩 fragment ,但有一件事对我来说没有意义,比如:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        page = getArguments().getInt("someInt", 2);

        Button btnOne = (Button) getView().findViewById(R.id.one);

        btnOne.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                String currentText = getScreen().getText().toString();
                currentText += "1";
                getScreen().setText(currentText);
            }
        });
    }

    // Inflate the view for the fragment based on layout XML
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.standard_calculator, container, false);
        return view;
    }


    /** Return the screen TextView object for manipulation
     * @return screen
     */
    public TextView getScreen() {
        return screen;
    }

屏幕标题是类(class)中的私有(private)变量,这不是整个类(class),而是我需要帮助解决问题的部分。至少会有 15 个左右的按钮来操作屏幕,将它们全部放在 onCreate 方法中感觉不是很好的做法,我想知道将它们放在另一个类中是否会更好让 fragment 中的方法更具体地针对 fragment 的生命周期,尽管可以说按钮由 fragment 使用,因此应该是类的一部分。也许需要一种“初始化”方法。

我希望有人能指导我一些设计模式或应用程序设计的逻辑思维方式,这是完全不同的。

非常感谢。

最佳答案

将它们放在 XML 中不如在代码中通用。如果你不想有 XXX 匿名方法,你可以让你自己的 Fragment/Class 实现 View.onClickListener 并实现 onClick 方法:

@Override
public void onClick(final View v) {
    if ( v.getId() == R.id.btn_logout ){
        // Do One Thing 
    } else if ( v.getId() == R.id.btn_about) {
        // Do Something Else
    } else if ( v.getId() == R.id.btn_shutdown) {
        // Or Maybe do this :)
    }
}

然后在您的 onViewCreated 中为每个按钮分配“this”

final someBtn = (Button) view.findViewById(R.id.btn_logout);
someBtn.setOnClickListener(this);

这比一堆匿名方法看起来更简洁,而且您知道您的点击监听器在一个地方。

关于Android Fragment和逻辑应用设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864181/

相关文章:

android - 如何使用 WebView 从 android 应用程序调用 Angular 6 Typescript 函数?

android - 如何在 Android 应用程序中进行 View 层次结构转储

android - 即使未调用 onCreateView 也刷新当前 Fragment

java - 处理 View(State)PagerAdapter 内 Fragment 内 Fragment 的屏幕旋转

java - 如何处理android java中的bad_alloc

android - Eclipse ADT 会被弃用吗?

android.permission.INTERNET?

android - Flutter C++ 内存分配导致光栅线程卡顿 - Android NDK Dart FFI

android - 管理 fragment ,公共(public)静态 viewpager

java - 如何在选项卡菜单中使用抽屉导航