2016-04-15 10 views
0

Ich erhalte eine Fehlermeldung von "btnCalculate.setOnClickListener (neu View.OnClickListener()"Eine Schaltfläche erstellen OnClickListener funktioniert nicht?

„Method Invocation 'btnCalculate.setOnClickListener (neu View.OnClickListener() {@Override ...' sagen produzieren kann ‚java.lang.NullPointerException“

Was bedeutet das und wie kann ich es beheben?

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import org.w3c.dom.Text; 

public class MainActivity extends AppCompatActivity 
{ 
    TextView totalTextView; 
    EditText edtPercentage; 
    EditText edtNumber; 

    float percentage; 
    float number; 
    float total; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     percentage = 0; 
     number = 0; 
     total = 0; 

     Button btnCalculate = (Button) findViewById(R.id.btnCalculate); 
     btnCalculate.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
       percentage = Float.parseFloat(edtPercentage.getText().toString()); 
       number = Float.parseFloat(edtNumber.getText().toString()); 
       total = number * percentage/100; 
       totalTextView.setText(String.valueOf(total)); 
      } 
     }); 
    } 

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

    @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(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) 
     { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Ihr nicht Ihre Textview –

+0

Post xml dieser Aktivität Instanziieren ............. –

+0

'totalTextView' ist nicht' findViewById''d – EpicPandaForce

Antwort

0

btnCalculate kann null sein, wenn es nicht t im Layout gefunden - wird man von der Warnung befreien Sie könnte hinzufügen:

assert(btnCalculate!=null) 

vor der Warnung

0

Sie haben das nicht ‚verbunden‘ totalTextViewedtPercentage und edtNumber die findReferenceByID() Methode. Im onCreate Methode tut

..... 
setContentView(R.layout.activity_main()); 
totalTextView = (TextView)findViewByID(R.id.<IdOfTextView>); 
edtPercentage = (EditText)findViewByID(R.id.<IdOfEditText>); 
edtNumber = (EditText)findViewByID(R.id.<IdOfEditText>); 
..... 
0

Die msg ist ganz klar:

dieses Objekt TextView totalTextView muss (in der Regel in der onCreate Methode) initialisiert werden, bevor Sie versuchen, den Text darauf zu setzen, aber Sie vergessen haben, zu tun Es wird Ihre App abstürzen, sobald Sie auf die Schaltfläche klicken ...

Fix it!

dies tun:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     totalTextView = (TextView) findViewById(R.id.toolbar); //init the text view.... 
     .... 
Verwandte Themen