Question

I am trying to implement same onClickListener to all four ImageButton. But It is showing error of not resolving the onClickListener.

package com.yogeshbalan.myrootguide;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

import com.yogeshbalan.myrootguide.fragment_1.Android_Rooting;
import com.yogeshbalan.myrootguide.fragment_1.How;
import com.yogeshbalan.myrootguide.fragment_1.What;
import com.yogeshbalan.myrootguide.fragment_1.Why;

public class MainActivity extends Activity {

Fragment fragment;
public ImageButton android_rooting,android_what,android_why,android_how;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ImageButton android_rooting = (ImageButton)     findViewById(R.id.imageButton_androidrooting);
    final ImageButton android_what = (ImageButton) findViewById(R.id.imageButton_what);
    final ImageButton android_why = (ImageButton) findViewById(R.id.imageButton_why);
    final ImageButton android_how = (ImageButton) findViewById(R.id.imageButton_how);

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    Android_Rooting myFragment = new Android_Rooting();
    ft.add(R.id.myFragment, myFragment);
    ft.commit();


    android_rooting.setOnClickListener(onClickListener);
    android_what.setOnClickListener(onClickListener);
    android_why.setOnClickListener(onClickListener);
    android_how.setOnClickListener(onClickListener);

    ImageButton.OnClickListener onClickListener = new OnClickListener(){

        Fragment newFragment;
        @Override
        public void onClick(View v) {

            if (v.getId()==R.id.imageButton_androidrooting) {

                newFragment = new Android_Rooting();

            } else if(v.getId()==R.id.imageButton_what){

                newFragment = new What();

            }
            else if(v.getId()==R.id.imageButton_why){

                newFragment = new Why();

            }
            else if(v.getId()==R.id.imageButton_how){

                newFragment = new How();

            }

      }

    };

    FragmentTransaction Transaction = getFragmentManager().beginTransaction();
    Transaction.replace(R.id.myFragment, myFragment);
    Transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    Transaction.commit();

 }

I want to add Fragment in my MainActivity. But it is not going the way i expect.plaeas help me ...or suggest another way to do it ... I am following this Tutorial https://www.youtube.com/watch?v=KyXvq_kwfzg

Was it helpful?

Solution 2

Create a method outside from onCreate method like

View.OnClickListener onClickListener= new View.OnClickListener() {
    public void onClick(View v) {
      // it was the 1st button
    }
  };

and in oncreate method bind that method or click event like this

android_rooting.setOnClickListener(onClickListener);
android_what.setOnClickListener(onClickListener);
android_why.setOnClickListener(onClickListener);
android_how.setOnClickListener(onClickListener);

You also can do this from XML, add android:onClick="onClickListener" to all your ImageButtons which you want to bind onClickListener event.Listener.

OTHER TIPS

Try placing the

android_rooting.setOnClickListener(onClickListener);
android_what.setOnClickListener(onClickListener);
android_why.setOnClickListener(onClickListener);
android_how.setOnClickListener(onClickListener);

BELOW the

ImageButton.OnClickListener onClickListener = new OnClickListener(){
    ...
};

Hope this helps

Always put declaration of variable before usage. As suggested by @VictorKoenders, move your variable declaration above codes that using it :

ImageButton.OnClickListener onClickListener = new OnClickListener(){
    ........
};

android_rooting.setOnClickListener(onClickListener);
android_what.setOnClickListener(onClickListener);
android_why.setOnClickListener(onClickListener);
android_how.setOnClickListener(onClickListener);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top