2014-10-16 2 views
1

Этот код не запускается на Android Studio. Я просто хочу, чтобы он отображал тост при нажатии кнопки. Пожалуйста помоги. Код прилагается ниже:Ошибка нажатия кнопки мыши для тоста на студии android

Я новичок в разработке Android и испытываю трудности с этим. Я думаю, проблема заключается в глупой синтаксической ошибке или переменной, которая не определена. Также, как определить «v»?

package com.shutter2000.www.shutter_2000_oms;  
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 
import android.view.View.OnClickListener;  


public class SiteVisitDetails extends Activity { 

public EditText mCusName; 
public EditText mOrderID; 
public EditText mProjectID; 
public EditText mHeightWidth; 
public EditText mNote; 
public Button mSubmitButton; 


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

    //initialize text fields 
    mCusName = (EditText) findViewById(R.id.txtCusName); 
    mOrderID = (EditText) findViewById(R.id.txtOrderID); 
    mProjectID = (EditText) findViewById(R.id.txtProjectID); 
    mHeightWidth = (EditText) findViewById(R.id.txtHeightWidth); 
    mNote = (EditText) findViewById(R.id.txtNote); 
    mSubmitButton = (Button) findViewById(R.id.btnSubmit); 

    //listen to submit button click event 

    mSubmitButton.OnClickListener(new View.OnClickListener()) 
    { 

     @Override 
     public void onClick(View v){ 


     if (v == mSubmitButton) { 
      Context context = getApplicationContext(); 
      CharSequence text = "Successfully Sent!"; 
      int duration = Toast.LENGTH_LONG; 
      final Toast tost = Toast.makeText(context, text, duration); 
      tost.show(); 
     } 
    } 
    } 
} 

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

public void addItemsToProductSpinner() { 
    Spinner spinner = (Spinner) findViewById(R.id.spnProducts); 
    // Create an ArrayAdapter using the string array and a default spinner layout 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
      R.array.products, android.R.layout.simple_spinner_item); 
    // Specify the layout to use when the list of choices appears 
    android.R.layout.simple_spinner_item 
    // Apply the adapter to the spinner 
    spinner.setAdapter(adapter); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
}  

Ошибки:

Ошибки для "mSubmitButton ..."

Expected class or package 
'OnClickListener' is abstract;cannot be instantiated 

Ошибки для "@Override общественного ничтожной OnClick (View V) {..."

Annotations are not allowed here 
Identifier or type expected 

Ошибки для "public void addItemsToProductSpinner() ..."

";" expected 
Cannot resolve symbol "v" 
unexpected token 
+0

Есть ли какая-то ошибка? –

+0

Да, есть некоторые. –

ответ

0
package com.shutter2000.www.shutter_2000_oms;  
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 
import android.view.View.OnClickListener;  


public class SiteVisitDetails extends Activity implements OnClickListener{ 

public EditText mCusName; 
public EditText mOrderID; 
public EditText mProjectID; 
public EditText mHeightWidth; 
public EditText mNote; 
public Button mSubmitButton; 


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

    //initialize text fields 
    mCusName = (EditText) findViewById(R.id.txtCusName); 
    mOrderID = (EditText) findViewById(R.id.txtOrderID); 
    mProjectID = (EditText) findViewById(R.id.txtProjectID); 
    mHeightWidth = (EditText) findViewById(R.id.txtHeightWidth); 
    mNote = (EditText) findViewById(R.id.txtNote); 
    mSubmitButton = (Button) findViewById(R.id.btnSubmit); 

    //listen to submit button click event 

    mSubmitButton.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    if (v.getId() == R.id.mSubmitButton) { 
     Toast.makeText(this,"Successfully sent!",Toast.LENGTH_LONG).show();    
    } 

} 

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

public void addItemsToProductSpinner() { 
    Spinner spinner = (Spinner) findViewById(R.id.spnProducts); 
    // Create an ArrayAdapter using the string array and a default spinner layout 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
      R.array.products, android.R.layout.simple_spinner_item); 
    // Specify the layout to use when the list of choices appears 
    android.R.layout.simple_spinner_item 
    // Apply the adapter to the spinner 
    spinner.setAdapter(adapter); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 
+0

попробуйте код выше, вы получите желаемый результат –

+0

, вы должны указать идентификатор вашей кнопки в файле xml. например, если id вашей кнопки в xml-файле - btn_submit. то вам нужно проверить v.getId() == R.id.btn_submit –

+0

«Length_LONG» дает ошибку. –

1

Неправильно v == mSubmitButton В java, может равняться с оператором == только примитивные типы. Для объекта вам нужно использовать метод equals(). Заменить:

mSubmitButton.onClickListener(new View.OnClickListener()) 
    { 

     @Override 
     public void onClick(View v){ 


     if (v.getId() == R.id.btnSubmit) { 
      Context context = getApplicationContext(); 
      CharSequence text = "Successfully Sent!"; 
      int duration = Toast.LENGTH_LONG; 
      final Toast tost = Toast.makeText(context, text, duration); 
      tost.show(); 
     } 
    } 
    } 
+0

Сравнение ссылок на объекты - все в порядке. – laalto

0

Попробуйте с ниже код:

if(v.getId() == R.id.btnSubmit){ 
    Toast.makeText(SiteVisitDetails.this,"Successfully Sent!",Toast.LENGTH_LONG).show(); 
} 
0

Я думаю, что вам не нужно, чтобы проверить

@Override 
    public void onClick(View v){ 

//Don't need to check condition control come here only v.getId() == R.id.btnSubmit 
    // if (v == mSubmitButton) { 

     Context context = getApplicationContext(); 
     CharSequence text = "Successfully Sent!"; 
     int duration = Toast.LENGTH_LONG; 
     final Toast tost = Toast.makeText(context, text, duration); 
     tost.show(); 
    //} 
} 
+0

Спасибо за ваш отзыв :) –

0
mSubmitButton.setOnClickListener(new View.OnClickListener()) 
{ 
    @Override 
    public void onClick(View v){ 
     CharSequence text = "Successfully Sent!"; 
     int duration = Toast.LENGTH_LONG; 
     Toast tost = Toast.makeText(SiteVisitDetails.this, text, duration); 
     tost.show(); 
    } 

}); 

Используйте это. Нет необходимости проверять if(v.getId() == R.id.btnSubmit). Потому что вы устанавливаете действие клика на уже инициализированную кнопку.

+0

Спасибо за ваш отзыв :) –

0

вы должны использовать setter для установки onclickListener. И как вы используете новый onclicklistener и вы только установить его для вашей кнопки, вам не нужно, чтобы проверить, если V == mSubmitButton, потому что это единственный выбор в любом случае :)

mSubmitButton.setOnClickListener(new View.OnClickListener()) 
    { 

     @Override 
     public void onClick(View v){ 

      Context context = getApplicationContext(); 
      CharSequence text = "Successfully Sent!"; 
      int duration = Toast.LENGTH_LONG; 
      final Toast tost = Toast.makeText(context, text, duration); 
      tost.show(); 

    } 
+0

Спасибо. Я не могу поверить, что я такой глупый: P –

+0

приятно слышать, что он исправил вашу проблему :) – momosxp

0
mSubmitButton.OnClickListener(

должен быть

mSubmitButton.setOnClickListener(

Редактировать. Метод setOnClickListener ожидает, что объект, который реализует интерфейс View.OnClickListener:

mSubmitButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v){ 
     Context context = getApplicationContext(); 
     CharSequence text = "Successfully Sent!"; 
     int duration = Toast.LENGTH_LONG; 
     final Toast tost = Toast.makeText(context, text, duration); 
     tost.show(); 
    } 
}); 
+0

Оба дают тот же результат. –

0

Replace 'это' с getApplicationContext()

@Override 
public void onClick(View v) { 
if (v.getId() == R.id.mSubmitButton) { 
    Toast.makeText(getApplicationContext(),"Successfully sent!",Toast.Length_LONG).show();    
} 

} 
+0

То, что дает ошибку: «OnClickListener» является абстрактным; не может быть экземпляр –

+0

setOnClickListner также является абстрактной функцией использовать разметку студии. Я надеюсь, что этот метод тоже будет. –

+0

@Override public void onClick (View v) { Toast.makeText (getApplicationContext(), "Успешно отправлено!", Toast.Length_LONG) .show(); } } –

0

Чтобы отобразить тост, когда кнопка нажата.

mSubmitButton = (Button) findViewById(R.id.btnSubmit); 
    mSubmitButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      //SiteVisitDetails 
      Toast tea = Toast.makeText(getApplicationContext(), "Send", Toast.LENGTH_LONG); 
      tea.show(); 

     } 
    }); 
0

Существует неуместна скобка в вашем синтаксисе, и недостающий ; и имя методы опечатки setOnClickListener.

Изменить

mSubmitButton.OnClickListener(new View.OnClickListener()) 
    { 
    // ... 
    } 

в

mSubmitButton.setOnClickListener(new View.OnClickListener() 
    { 
    // ... 
    }); 
Смежные вопросы