2016-04-27 11 views
2

Kann mir jemand sagen, warum dieser Fehler angezeigt wird (oder sogar eine bessere Lösung)?
Ich bin neu zu Java (und Android) Entwicklung, damit ich weiß wirklich nicht meine Schuld Mein Code:Methode überschreibt keine Methode von ihrer Oberklasse

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; 
    } 

} 

Antwort

1

Sie können auch zwei Methoden außer Kraft setzen:

@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

ersetzen:

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

mit:

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

als onCreateView() is not passed a View parameter.

Auch loswerden super.onViewCreated(view, savedInstanceState);. Es ist weder notwendig noch angemessen, das anzurufen, wo Sie sind.

Bitte beachten Sie, dass alles nach Ihrer return Anweisung in dieser Methode nicht ausgeführt wird, da Sie zuerst zurückkehren. Weisen Sie das Ergebnis inflater.inflate(...) einer lokalen Variablen zu, verwenden Sie es und geben Sie diese Variable am Ende Ihrer Methode zurück.

+0

Ok, aber jetzt, wie kann ich 'Knopf btn = (Button) view.findViewById (R.id.btn)'? – NiklasZeroZero

+1

@NiklasZeroZero: Weisen Sie das 'inflater.inflate (...)' Ergebnis einer lokalen Variablen zu. Fühlen Sie sich frei, diese 'Ansicht' 'view' zu nennen. Rufen Sie dann 'findViewById()' in 'view' auf. – CommonsWare

Verwandte Themen