2013-03-07 32 views
5
public class MainActivity extends Activity { 

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



    Button btn = (Button) findViewById(R.id.button1); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      EditText text = (EditText)findViewById(R.id.editText1); 
      EditText text1 = (EditText)findViewById(R.id.editText2); 
      String userid = text.getText().toString(); 
      String pass = text1.getText().toString(); 
     Toast.makeText(getBaseContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 
     } 

    }); 

} 

Mã thực hiện thành công, nhưng không có gì xảy ra khi nhấn nút. Khi tôi tập trung vào các dòng trong nhật thực nó nói như sauTôi đang cố gắng hiển thị bánh mì nướng khi nhấn nút này. Nhưng mã không hoạt động

"The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (new 
View.OnClickListener(){}, String, int)" 

Hãy cho tôi biết những gì tôi đòi hỏi phải làm gì để làm cho nó hoạt

+1

thử MainActivity.this thay cho geBaseContext() – Pragnani

+0

Bạn không sử dụng 'getBaseContext()' khi bạn thấy lỗi bạn đang sử dụng 'this' ... Bạn nên thử lưu hoặc làm sạch mã của bạn. – Sam

Trả lời

16

Bạn phải vượt qua hiện tại Context như tham số đầu tiên (thay vì getBaseContext()). Điều này, trong trường hợp của bạn, là MainActivity.this.

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 
+0

Làm việc như một sự quyến rũ! Bạn có thể hướng dẫn tôi về "ngữ cảnh" thực sự có nghĩa là gì không? Tôi rất mới phát triển ứng dụng Android. Và chắc chắn Nếu tôi biết những gì nó là tôi sẽ không làm cho những sai lầm như vậy nhiều hơn nữa. – tMJ

2

Đó là vì getBaseContext() tại thời điểm đó trong mã đang tham chiếu trình nghe nhấp chuột. Những gì bạn muốn tham chiếu là hoạt động của bạn. Bạn nên thay đổi các tài liệu tham khảo của Bối cảnh của bạn trong tin nhắn Toast là View.getContext() (nếu làm việc vào bối cảnh từ bên trong một subview) hoặc này.

+1

'getBaseContext()' không thể tham khảo một OnClickListener, đây là một cá trích đỏ. – Sam

+0

Lý do mà anh ta nhận được bản in của "Phương thức makeText (Context, CharSequence, int) trong loại Bánh mì nướng không áp dụng cho các đối số (mới View.OnClickListener() {}, String, int)" nên bởi vì đối số từ getBaseContext được truyền vào là lỗi báo cáo View.OnClickListener. –

+0

Nếu bạn có thể tạo lại lỗi đó, tôi sẽ bị _very_ gây ấn tượng. Lỗi này rất có thể còn sót lại từ 'Toast.makeText (điều này, ...' và trình biên dịch đã không làm mới/xóa lỗi đó. Ngoài ra tôi chưa bao giờ nghe nói về 'Activity.getContext()' là một lỗi đánh máy? Nếu không, bạn sẽ liên kết với tài liệu của nó? – Sam

0
Toast.makeText(getApplicationContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 

HOẶC

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 

Phương pháp Cú pháp

public static Toast makeText (Context context, CharSequence text, int duration); 

Bối cảnh sử dụng. Thông thường đối tượng Ứng dụng hoặc Hoạt động của bạn.

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