It loos like i'm doing everything right here but I must be missing something. Hoping to get explanation about why I'm getting that error in the first line of my code and what I should do to fix this type of problem? I'm new to android dev.
public class page2 extends AppCompatActivity implements OnClickListener {
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client;
ImageButton rock, scissors, paper;
Random randomNum = new Random();
int cpuMov;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitypage2); //set what xml page style to display
rock = (ImageButton) findViewById(R.id.imageButtonRock);
scissors = (ImageButton) findViewById(R.id.imageButtonScissors);
paper = (ImageButton) findViewById(R.id.imageButtonPaper);
rock.setOnClickListener(new OnClickListener() { // calling onClick() method
@Override
//method for handling what happens when you click Rock buttonImage.
public void onClick(View v) {
// number between 1-3 inclusive (max-min+1)+1
cpuMov = randomNum.nextInt(3 - 1 + 1) + 1;
buildAlert(cpuMov, "imageButtonRock");
moveViewToScreenCenter(v);//float to center
}
});
scissors.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// number between 1-3 inclusive (max-min+1)+1
cpuMov = randomNum.nextInt(3 - 1 + 1) + 1;
buildAlert(cpuMov, "imageButtonScissors");
moveViewToScreenCenter(v);//float to center
}
});
paper.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// number between 1-3 inclusive (max-min+1)+1
cpuMov = randomNum.nextInt(3 - 1 + 1) + 1;
buildAlert(cpuMov, "imageButtonPaper");
moveViewToScreenCenter(v);//float to center
}
});
} //EoOnCreate
private void moveViewToScreenCenter( View view )
{
RelativeLayout root = (RelativeLayout) findViewById( R.id.rootLayout );
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics( dm );
int statusBarOffset = dm.heightPixels - root.getMeasuredHeight();
int originalPos[] = new int[2];
view.getLocationOnScreen( originalPos );
int xDest = dm.widthPixels/2;
xDest -= (view.getMeasuredWidth()/2);
int yDest = dm.heightPixels/2 - (view.getMeasuredHeight()/2) - statusBarOffset;
TranslateAnimation anim = new TranslateAnimation( 0, xDest - originalPos[0] , 0, yDest - originalPos[1] );
anim.setDuration(5000); // speed of the movement
anim.setFillAfter( true );
view.startAnimation(anim);
}
//builds the message that will be displayed
void appendMessage(AlertDialog.Builder myAlert, String cpuMove, String result) {
myAlert.setMessage("Computer selects " +cpuMove+ ", you " +result+ "!");
myAlert.show();
myAlert.setCancelable(true);
//how to give id to alertDialog to save in strings.xml
}
public void buildAlert(int move, String btnPressed) {
AlertDialog.Builder myAlert = new AlertDialog.Builder(this);
String cpuMove;
String result;
if (btnPressed.equals("imageButtonRock")) {
//Toast.makeText(this, "hooray "+move, Toast.LENGTH_SHORT).show();
if (move == 1) {
cpuMove = "Rock";
result = "tied";
//call appendMessage to append vars and display the message
appendMessage(myAlert, cpuMove, result);
}
if (move == 2) {
cpuMove = "Scissors";
result = "won";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
if (move == 3) {
cpuMove = "Paper";
result = "lost";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
} else if (btnPressed.equals("imageButtonScissors")) {
if (move == 1) {
cpuMove = "Rock";
result = "lost";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
if (move == 2) {
cpuMove = "Scissors";
result = "tied";
//call appendMessage to append vars and display the message
appendMessage(myAlert, cpuMove, result);
}
if (move == 3) {
cpuMove = "Paper";
result = "won";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
} else { //imageButton is Scissors
if (move == 1) {
cpuMove = "Rock";
result = "won";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
if (move == 2) {
cpuMove = "Scissors";
result = "lost";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
if (move == 3) {
cpuMove = "Paper";
result = "tied";
//call appendMessage to append vars and display the message
appendMessage(myAlert,cpuMove,result);
}
}
}
@Override
public void onStart() {
super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client.connect();
Action viewAction = Action.newAction(
Action.TYPE_VIEW, // TODO: choose an action type.
"page2 Page", // TODO: Define a title for the content shown.
// TODO: If you have web page content that matches this app activity's content,
// make sure this auto-generated web page URL is correct.
// Otherwise, set the URL to null.
Uri.parse("http://host/path"),
// TODO: Make sure this auto-generated app deep link URI is correct.
Uri.parse("android-app://rps.rsp/http/host/path")
);
AppIndex.AppIndexApi.start(client, viewAction);
}
@Override
public void onStop() {
super.onStop();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
Action viewAction = Action.newAction(
Action.TYPE_VIEW, // TODO: choose an action type.
"page2 Page", // TODO: Define a title for the content shown.
// TODO: If you have web page content that matches this app activity's content,
// make sure this auto-generated web page URL is correct.
// Otherwise, set the URL to null.
Uri.parse("http://host/path"),
// TODO: Make sure this auto-generated app deep link URI is correct.
Uri.parse("android-app://rps.rsp/http/host/path")
);
AppIndex.AppIndexApi.end(client, viewAction);
client.disconnect();
}
}
I know that View.OnClickListener must implement the function onClick(). Am I not doing that?
You need to implement all the unimplemented methods from the interface you're implementing. In your case the interface is OnClickListener and it needs to have a method:
public abstract void onClick (View v)
Either remove the interface or implement that method. You can do so easily by placing your cursor on the OnClickListener and pressing ALT+ENTER if you're using Android Studio and it'll give you the options on how to fix the error.
As I can see in your code, you've already given your buttons the proper onClickListeners so the solution might be simply to delete implements OnClickListener since you're not using it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With