代码之家  ›  专栏  ›  技术社区  ›  Stoic

Android/Java:片段UI不可访问

  •  0
  • Stoic  · 技术社区  · 2 年前

    在下面Java的最小示例中,我试图访问我在片段中设置的小部件。我无法访问这些小部件。例如,在下面的代码中,我调用 setText() 不起作用,也不要更改布局。

    代码是编译的,所以我认为我的xml没有任何问题。

    所有其他方法都是默认的,我更改的唯一方法是 onViewCreated onCreateView

    public class MyFragment extends Fragment {
    
        View view;
        Button btn;
    
        public MyFragment() {}
    
        @Override
        public void onCreate( ... }
    
        public static MyFragment newInstance() { ... }
    
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
    
            System.out.println("VIEW CREATED");      // prints
    
            btn.setText("Text Changed");                     // text isn't changed
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            view = inflater.inflate(R.layout.my_fragment, container, false);
            btn = view.findViewById(R.id.thisIsAButton);
            return inflater.inflate(R.layout.my_fragment, container, false);
        }
    }
    

    我也试着设置 onClickListeners 以及按钮上的其他东西,但我就是无法访问它。

    1 回复  |  直到 2 年前
        1
  •  1
  •   jayesh gurudayalani    2 年前

    你能试试这个代码吗

    @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
    
            System.out.println("VIEW CREATED");      // prints
            btn = view.findViewById(R.id.thisIsAButton);
            btn.setText("Text Changed");                     // text isn't changed
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            view = inflater.inflate(R.layout.my_fragment, container, false);
            return view;
        }