2016-04-27 7 views
2

Может ли кто-нибудь сказать мне, почему эта ошибка отображается (или даже имеет лучшее решение)?
Я новичок в 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; 
    } 

} 

ответ

1

Вы можете переопределить два метода также:

@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(); 
     } 
    }); 

    } 
2

Replace:

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(...) локальной переменной, используйте ее, а затем верните эту переменную в конце вашего метода.

+0

Хорошо, но сейчас, как я могу сделать 'Кнопка БТН = (Button) view.findViewById (R.id.btn)'? – NiklasZeroZero

+1

@NiklasZeroZero: присвойте 'inflater.inflate (...)' результат локальной переменной. Не стесняйтесь называть это 'View'' view'. Затем вызовите 'findViewById()' на 'view'. – CommonsWare