2017-02-18 15 views
1

私はコーディングが新しく、2つの変数から減算を行う単純なアプリケーションを作ろうとしていましたが、計算するボタンをクリックするとアプリがクラッシュします。私はコードの問題を見つける?単純なアプリケーションの問題

SOあなたはこれを試すことができます。..

package apps.ste.resto; 

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

import static apps.ste.resto.R.id.risultato; 

public class MainActivity extends AppCompatActivity { 

TextView importo; 
TextView conto; 
TextView risultato; 

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

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    TextView risultato = (TextView) findViewById(R.id.textView); 
    TextView importo = (TextView) findViewById(R.id.editText); 
    TextView conto = (TextView) findViewById(R.id.editText2); 
    Button bottone = (Button) findViewById(R.id.button); 
    bottone.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      result(); 
     } 
    }); 
} 

public void result(){ 
    float result = Float.parseFloat(importo.getText().toString()) - Float.parseFloat(conto.getText().toString()); 
    risultato.setText(Float.toString(result)); 
} 

@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

あなたがいる(アンドロイドスタジオ)ここで

コードですresult()メソッドの中からresult()メソッドを呼び出すと、無限ループを作成しませんか?また、logcatを投稿してください。 –

+0

エラーログを投稿できますか? –

+0

エラーログを投稿できません。エミュレーターは非常に遅いため、使用しません。また、オンにするには10mしかかかりません。 –

答えて

0

私はあなたがのgetText()にnull値を取得していると思う::

public void result(){ 

    boolean digitsOnly1 = TextUtils.isDigitsOnly(importo.getText()+""); 
    boolean digitsOnly2 = TextUtils.isDigitsOnly(conto.getText()+""); 

    if(digitsOnly1 && digitsOnly2){ 
     float result = Float.parseFloat(importo.getText().toString()) - Float.parseFloat(conto.getText().toString()); 
     risultato.setText(result+"")); 
    }else{ 
     risultato.setText("Please provide inputs"); 
    } 

}