2013-06-04 65 views
12

Tôi đang cố gắng phát triển và ứng dụng bằng cách sử dụng Android Studio mới, nhưng tôi tiếp tục gặp lỗi chính trên OnClickListeners của mình. Chủ yếu nó được nói với tôi rằng nó không thể giải quyết biểu tượng "setOnClickListener" và nó cũng không thể giải quyết "View v"OnClickListener trong 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)); 
     } 
    }); 

Đó là mã trong lớp

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 

Đó là những lỗi Tôi nhận được điều này hoàn toàn không có ý nghĩa. Dòng 28 bắt đầu từ khi tôi làm button.setOnClickListener

EDIT: Bây giờ tôi nhận được một lực lượng gần khi tôi bấm nút

Đây là lớp nó sẽ mở ra, một lớp trần với sự thay đổi duy nhất là bố trí để mở

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

đảm bảo bạn đã tuyên bố hoạt động 'StandingsActivity' trong AndroidManifest.xml? –

Trả lời

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)); 
    } 
}); 

Mã này không có bất kỳ phương pháp nào. Nếu bạn muốn sử dụng nó, nó phải nằm trong một phương pháp như 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)); 
      } 
     }); 
     } 

(xin lỗi vì sự thụt đầu dòng)

+0

Nó hoạt động hoàn hảo – todaroa

3

bạn sẽ cần phải nút initilzation bên trong phương pháp thay vì cố gắng initlzing Xem lý lịch thành ở cấp lớp làm điều đó như:

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

này đã làm việc cho tôi:

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) { 

     } 
}); 

cùng điều mà Nic007 đã nói trước đây.

Bạn cần phải viết mã bên trong phương thức "onCreate". Xin lỗi tôi quá cho indent ... (bình luận đầu tiên ở đây)

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

Bạn có thể giải thích cách mã này hoạt động, cũng như định dạng mã của bạn trong câu trả lời của bạn (sử dụng bốn dấu cách). – Hosch250

Các vấn đề liên quan