Skocz do zawartości
aliseravima

Button, Activity,Android Studio

    Rekomendowane odpowiedzi

    Mam trzy Activity. Na głównym Activity mam 2 przyciski. Pierwszy przycisk otwiera jedno Activity i kod wygląda tak:

    @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_menu);
           button = (Button) findViewById(R.id.base_btn);
           button.setOnClickListener(this);
    @Override
       public void onClick(View v) {
           Intent intent = new Intent(getApplicationContext(),DrugieActivity.class);
           startActivity(intent);
    

    A jak zrobić żeby ten drugi przycisk otwierał te TrzecieActivity.class??

    Edytowane przez panryz

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    pavloasto

    Tak samo, tylko zrobić zmienną "button2" (wymyśl lepszą nazwę tylko), złapać pod nią komponent z pliku XML i ustawić listener który otworzy trzecie activity.

    Wybacz że nie podam Ci gotowca, po pierwsze nie mam wszystkich informacji aby go napisać, a po drugie lepiej jak sam to zrobisz.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Wiesz co nie udało mi się.... ehhh. robię tak.

    btnprogram = (Button) findViewById(R.id.program_btn);
           btnprogram.setOnClickListener(i co tu wpisać??)
    

    wtedy zgonie z instrukcją zrobiłem this i mogłem zrobić metodę(alt+enter).

    a tutaj nie wiem co wpisać?

    Edytowane przez panryz

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Cubaza

    Po pierwsze, znaczniki nazywają się

     a nie <code>... Po drugie to proponuję jeszcze raz przejrzeć kursy albo znaleźć inne... Skoro nie uczą takich podstawowych rzeczy.
    [code]
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);
    button = (Button) findViewById(R.id.base_btn);
    button.setOnClickListener(this);
    btnprogram = (Button) findViewById(R.id.program_btn);
    btnprogram.setOnClickListener([b]this[/b])
    @Override
    public void onClick(View v) {
    Intent intent; 
    switch(v.getId()){
    
    case: R.id.base_btn:
      intent = new Intent(getApplicationContext(),DrugieActivity.class);
     break;
     case: R.id.program_btn:
      intent = new Intent(getApplicationContext(), TrzecieActivity.class);
      break;
     default:
      intent = new Intent(getApplicationContext(), DrugieActivity.class); //zabezpieczenie przed niezainicjalizowaniem intentu
     break;
    }
    startActivity(intent);
    

    I tyle... Oczywiście ten sposób jest poprawny jeśli implementujesz w Activity interfejs onClickListener. W momencie kiedy tego nie robisz to inicjalizacja przyciśnięcia przycisku wygląda tak:

     button.setOnClickListener(new OnClickListener(...)); 
    

    I tam jest zawarta metoda onClick. Dla każdego buttona oddzielnie.

    Pisane z palca. Mogą być błędy ;)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Dzięki, pomogłeś mi i działa, a wygląda to tak:

    public class MenuActivity extends ActionBarActivity implements View.OnClickListener {
    
    
       private Button btnbase;
       private Button btnprogram;
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_menu);
           btnbase = (Button) findViewById(R.id.btn_base);
           btnbase.setOnClickListener(this);
           btnprogram = (Button) findViewById(R.id.btn_program);
           btnprogram.setOnClickListener(this);
    @Override
       public void onClick(View v) {
           Intent intent = null;
           switch(v.getId()){
    
               case R.id.btn_base:
               intent = new Intent(getApplicationContext(),BaseExercise.class);
               break;
               case R.id.btn_program:
               intent = new Intent(getApplicationContext(), Program.class);
               break;
                    }
           startActivity(intent);
       }
    

    Tylko mógłbyś mi wyjaśnić łopatologicznie czemu dodałeś "intent = new Intent(getApplicationContext(), DrugieActivity.class); //zabezpieczenie przed niezainicjalizowaniem intentu

    break;"??

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Cubaza

    Już tłumaczę na przykładzie:

    w onCreate masz na przykład coś takiego

    button_one.setOnClickListener(this);
    button_two.setOnClickListener(this);
    button_three.setOnClickListener(this);
    

    Id buttonów mamy takie same jak ich nazwy.

    Wtedy w metodzie onClick mamy coś takiego:

    Intent intent = null;
           switch(v.getId()){
               case R.id.button_one:
               intent = new Intent(getApplicationContext(),BaseExercise.class);
               break;
               case R.id.button_two:
               intent = new Intent(getApplicationContext(), Program.class);
               break;
                    }
           startActivity(intent);
    

    A Ty klikasz w button_three. Wtedy intent jest nullem i przez to dostajesz error NullPointerException. Ale to jest szczególny przypadek, który jest szansa, że nie wystąpi, jeśli jest dobrze napisane. Użycie default zabezpiecza przed tym, ale to jest takie dziwne obejście, które może się nie sprawdzić.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x