【问题标题】:Method does not override method from its superclass方法不会覆盖其超类中的方法
【发布时间】:2016-08-22 03:49:37
【问题描述】:

谁能告诉我,为什么会显示这个错误(甚至有更好的解决方案)?
我是 Java(和 Android)开发的新手,所以我真的不知道我的错 我的代码:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;


public class select_type extends Fragment {


    public select_type() {
        // Required empty public constructor
    }

    @Override //<--- Cause the ERROR
    public View onCreateView(View view, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        return inflater.inflate(R.layout.fragment_select_type, container, false);

        Button btn = (Button) view.findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                noVIP TextFragment = new noVIP();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.fragment_container, TextFragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

        return view;
    }

}

【问题讨论】:

    标签: java android overriding superclass


    【解决方案1】:

    替换:

    public View onCreateView(View view, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    

    与:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    

    作为onCreateView() is not passed a View parameter

    另外,摆脱super.onViewCreated(view, savedInstanceState);。在你所在的地方称呼它既没有必要也不合适。

    请注意,该方法中return 语句之后的所有内容都不会执行,因为您首先返回。将 inflater.inflate(...) 结果分配给局部变量,使用它,然后在方法结束时返回该变量。

    【讨论】:

    • 好的,但是现在,我怎样才能使Button btn = (Button) view.findViewById(R.id.btn)
    • @NiklasZeroZero:将inflater.inflate(...) 结果分配给局部变量。请随时致电Viewview。然后,在view 上致电findViewById()
    【解决方案2】:

    你也可以重写两个方法:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_select_type, container, false);
    }
    
    
    
    
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    
       Button btn = (Button) view.findViewById(R.id.btn);
    
        btn.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
                noVIP TextFragment = new noVIP();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.fragment_container, TextFragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        }); 
    
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 2019-11-23
      相关资源
      最近更新 更多