-6

I just Started on learning java for our thesis.

Why does @Override Method does not override from it's superclass

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageButton;

/**
 * A simple {@link Fragment} subclass.
 */
public class HomeFragment extends Fragment
{
    public HomeFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View home = inflater.inflate(R.layout.fragment_home, container, false);

        //ImageButton
        ImageButton imageButton = (ImageButton)         
        home.findViewById(R.id.imageButton1);
        ImageButton button2 = (ImageButton)  
        home.findViewById(R.id.imageButton2);
        imageButton.setOnClickListener((View.OnClickListener) this);
        button2.setOnClickListener((View.OnClickListener) this);

        return home;
    }

   @Override
   public void onClick(View v)
   {
        int viewId = v.getId();
        switch (viewId)
        {
            //if imagebutton1 is clicked
            case R.id.imageButton1:
                Intent newActivity  = new Intent(HomeFragment.this.getActivity(), Tilapia.class);
                startActivity(newActivity);
                break;

            //button2
            case R.id.imageButton2:
                Intent newActivity2 = new Intent(HomeFragment.this.getContext(), Crab.class);
                startActivity(newActivity2);
                break;

            default:
                break;
        }
    }
}

i don't know why i'm having this error. please help.

Michael
  • 41,989
  • 11
  • 82
  • 128
  • I would guess because your fragment is not an OnClickListener? You're passing `this` to `setOnClickListener` (with a cast), but your class definition states it only extends Fragment, and does not implement the interface `OnClickListener` – Jeroen Steenbeeke Feb 23 '18 at 09:18

2 Answers2

3

Add OnClickListener implementation to fragment like:

public class HomeFragment extends Fragment implements View.OnClickListener {
    // Your code here
}
AskNilesh
  • 67,701
  • 16
  • 123
  • 163
Firoz Memon
  • 4,282
  • 3
  • 22
  • 32
0

You can not override onClick() method because onclick is not method of Fragment. onClick() is abstract method of View.OnClickListener interface. To override onClick() method, you have to implement interface View.OnClickListener.

e.g.

public class HomeFragment extends Fragment implements View.OnClickListener {

}
Samir Bhatt
  • 3,041
  • 2
  • 25
  • 39