Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save udacityandroid/d5826cdde2e0591c0162452f48f6be2d to your computer and use it in GitHub Desktop.
Save udacityandroid/d5826cdde2e0591c0162452f48f6be2d to your computer and use it in GitHub Desktop.
Use OnClickListeners for All Categories - onCreate method in MainActivity.java
// Find the View that shows the numbers category
TextView numbers = (TextView) findViewById(R.id.numbers);
// Set a click listener on that View
numbers.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the numbers View is clicked on.
@Override
public void onClick(View view) {
Intent numbersIntent = new Intent(MainActivity.this, NumbersActivity.class);
startActivity(numbersIntent);
}
});
@yaz71
Copy link

yaz71 commented Sep 28, 2020

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set the content of the activity to use the activity_main.xml layout file
    setContentView(R.layout.activity_main);
    TextView numbers= (TextView)findViewById(R.id.numbers);
    TextView phrases = (TextView)findViewById(R.id.phrases);
    TextView family = (TextView)findViewById(R.id.family);
    TextView colors = (TextView)findViewById(R.id.colors);

    numbers.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent Numb = new Intent(MainActivity.this, numbersActivity.class);
            startActivity(Numb);
        }
    });

    phrases.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent phrase = new Intent(MainActivity.this, phrasesActivity.class);
            startActivity(phrase);
        }
    });

    family.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent fam = new Intent(MainActivity.this, familyMembersActivity.class);
            startActivity(fam);
        }
    });

    colors.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent col = new Intent(MainActivity.this, colorsActivity.class);
            startActivity(col);
        }
    });
}

}

Here's my code, but I don't like the too much repetition :/ is there like an IF statement or a switch to use to implement this in less lines?

Copy link

ghost commented Oct 1, 2020

setOnClickListener

same with me

@Ahmostafaa
Copy link

Can anyone tell me what's wrong ?

error

@noxicus
Copy link

noxicus commented Jan 21, 2021

Can anyone tell me what's wrong ?

error

Check your brackets and semicolons

image

@nitish778191
Copy link

oopo
Can anyone explain this line of code please!

@bmramyabm
Copy link

Please check if you've pasted this code within the onCreate method.

Thanks

@Rishabh5752
Copy link

is anyone lost like me? :(

yes, i don't understand a single word of the video

@n0obs73r
Copy link

oopo
Can anyone explain this line of code please!

The first Parameter you are passing is the context of current activity because in case you want to press back after going to the next activity it'll act as a link and the next one is pretty self explanatory (it is passing the class you want to go to after clicking on the view).

@wdoodoo
Copy link

wdoodoo commented Jul 20, 2021

Hello, fellow coders.

I am sharing code based on my development environment as below.
I am using Android Studio 4.2.2, Build #AI-202.7660.26.42.7486908, built on June 24, 2021, Runtime version: 11.0.8+10-b944.6842174 amd64, VM: OpenJDK 64-Bit Server VM by N/A
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)

The MainActivity.java code is look like this and it works for me.
Hope this is helpful for someone out there. Happy coding!

``
package com.tutorial.android.miwok;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

     TextView numbers = findViewById(R.id.numbers);
     numbers.setOnClickListener(view -> {

        Intent numbersIntent = new Intent(this, NumbersActivity.class);
        startActivity(numbersIntent);
    });

    TextView family = findViewById(R.id.family);

    family.setOnClickListener(view -> {
        Intent familyIntent = new Intent(this, FamilyActivity.class);
        startActivity(familyIntent);
    });

    TextView colors = findViewById(R.id.colors);

    colors.setOnClickListener(view -> {

        Intent colorsIntent = new Intent(this, ColorsActivity.class);
        startActivity(colorsIntent);
    });

    TextView phrases = findViewById(R.id.phrases);

    phrases.setOnClickListener(view -> {

        Intent phrasesIntent = new Intent(this, PhrasesActivity.class);
        startActivity(phrasesIntent);
    });
}

}

@Harriskobia
Copy link

Note: If you don't want to create a Intent class, you can simply call the Intent constructor INSIDE the startActivity() method, like this:

TextView numbers = findViewById(R.id.numbers);

    numbers.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            startActivity(new Intent(MainActivity.this, NumbersActivity.class));
        }
    });
}

This is actually nice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment