2013-06-04 16 views
12

Próbuję tworzyć i używać aplikacji przy użyciu nowego Studio Android, ale nadal otrzymuję poważne błędy w moich OnClickListeners. Głównie to mówi mi, że nie może rozwiązać symbol „setOnClickListener”, a także nie może rozwiązać „View v”OnClickListener w Android Studio

package com.sigmachi.derbydays; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 

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


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    Button button= (Button) findViewById(R.id.standingsButton); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this,StandingsActivity.class)); 
     } 
    }); 

czyli kod w klasie

Information:Compilation completed with 11 errors and 0 warnings in 4 sec 
Information:11 errors 
Information:0 warnings 
/Users/angelo/AndroidStudioProjects/SigmaChiDerbyDaysProject/SigmaChiDerbyDays/src/main/java/com/sigmachi/derbydays/MainActivity.java 
    Error:Error:line (28)Gradle: <identifier> expected 
    Error:Error:line (28)Gradle: illegal start of type 
    Error:Error:line (28)Gradle: ')' expected 
    Error:Error:line (28)Gradle: ';' expected 
    Error:Error:line (28)Gradle: invalid method declaration; return type required 
    Error:Error:line (30)Gradle: illegal start of type 
    Error:Error:line (30)Gradle: ';' expected 
    Error:Error:line (30)Gradle: ')' expected 
    Error:Error:line (30)Gradle: not a statement 
    Error:Error:line (30)Gradle: ';' expected 
    Error:Error:line (33)Gradle: illegal start of type 

Są to błędy Otrzymuję co absolutnie nie ma sensu. Linia 28 rozpoczyna się, gdy robię button.setOnClickListener

EDIT: Teraz otrzymasz blisko siły po naciśnięciu przycisku

Jest to klasa powinna otwierać, gołe klasy z jedyną zmianą jest układ do otwierania

package com.sigmachi.derbydays; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class StandingsActivity extends Activity { 

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


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
+0

upewnij się, że zadeklarowałeś działanie "StandingsActivity" w AndroidManifest.xml? –

Odpowiedz

23
Button button= (Button) findViewById(R.id.standingsButton); 
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     startActivity(new Intent(MainActivity.this,StandingsActivity.class)); 
    } 
}); 

Ten kod nie jest w żadnej metodzie. Jeśli chcesz go używać, to musi być w sposób jak onCreate()

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

Button button= (Button) findViewById(R.id.standingsButton); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       startActivity(new Intent(MainActivity.this,StandingsActivity.class)); 
      } 
     }); 
     } 

(przepraszam za wcięcia)

+0

Udało się idealnie – todaroa

3

trzeba będzie przycisk initilzation wewnątrz metody zamiast próbować initlzing Zobacz na poziomie klasy, jak to zrobić:

Button button; //<< declare here.. 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button= (Button) findViewById(R.id.standingsButton); //<< initialize here 
     // set OnClickListener for Button here 
     button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this,StandingsActivity.class)); 
     } 
     }); 
    } 
1

ten pracował dla mnie:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_newarea); 

    btnSave = (Button)findViewById(R.id.btnSave); 

    OnClickListener btnListener = new OnClickListener() { 
     @Override 
     public void onClick(android.view.View view) { 
      finish(); 
     } 
    }; 
    btnSave.setOnClickListener(btnListener); 

} 
1
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_my); 
    titolorecuperato = (TextView) findViewById(R.id.textView); 
    String stitolo = titolorecuperato.getText().toString(); 

    Button btnHome = (Button) findViewById(R.id.button); 

    btnHome.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 

     } 
}); 

samego jak powiedział Nic007.

Musisz napisać kod w metodzie "onCreate". Przepraszam też za wcięcie ... (pierwszy komentarz tutaj)

0
@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.standingsButton) { 
      startActivity(new Intent(MainActivity.this,StandingsActivity.class)); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
+0

Czy możesz wyjaśnić, jak działa ten kod, a także sformatować swój kod w odpowiedzi (użyj czterech spacji). – Hosch250

Powiązane problemy