Во-первых, вы должны поместить все свои вычисления после фактического назначения.
Во-вторых, findViewById()
необходимо явное приведение к фактическому типу представления. (Я не запускал код, а просто вставил их в Android Studio. Там, похоже, предупреждений нет.)
В-третьих, вы можете просто позвонить EditText.getText().toString()
вместо String.valueOf(EditText.getText())
, во всех случаях до Android P . (Остальные случаи , когда этоEditText отображает .)
Тогда код будет изменен следующим образом:
package com.example.android.gravitywall;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button calculateButton = findViewById(R.id.calculate);
calculateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText heightEditText = findViewById(R.id.H);
double H = Double.parseDouble(String.valueOf(heightEditText.getText()));
EditText gammaStatEditText = findViewById(R.id.gamma_stat);
double gammaStat = Double.parseDouble(String.valueOf(gammaStatEditText.getText()));
EditText gammaDryEditText = findViewById(R.id.gamma_dry);
double gammaDry = Double.parseDouble(String.valueOf(gammaDryEditText.getText()));
EditText gammaWaterEditText = findViewById(R.id.gamma_water);
double gammaWater = Double.parseDouble(String.valueOf(gammaWaterEditText.getText()));
EditText gammaConcreteEditText = findViewById(R.id.gamma_concrete);
double gammaConcrete = Double.parseDouble(String.valueOf(gammaConcreteEditText.getText()));
EditText liveLoadEditText = findViewById(R.id.live_load);
double liveLoad = Double.parseDouble(String.valueOf(liveLoadEditText.getText()));
EditText faiEditText = findViewById(R.id.fai);
double sinfai = Math.sin(Double.parseDouble(String.valueOf(faiEditText.getText())));
EditText highWaterLevelEditText = findViewById(R.id.water_high_level);
double H_W_L = Double.parseDouble(String.valueOf(highWaterLevelEditText.getText()));
EditText streetLevelEditText = findViewById(R.id.street_level);
double S_L = Double.parseDouble(String.valueOf(streetLevelEditText.getText()));
EditText bottomLevelEditText = findViewById(R.id.bottom_level);
double B_L = Double.parseDouble(String.valueOf(bottomLevelEditText.getText()));
EditText fractionFactorEditText = findViewById(R.id.fraction_factor);
double F_F = Double.parseDouble(String.valueOf(fractionFactorEditText.getText()));
EditText allowableStressEditText = findViewById(R.id.allowable_stress);
double muo = Double.parseDouble(String.valueOf(allowableStressEditText.getText()));
// this value seems unused
double h1 = S_L - H_W_L;
double h2 = H_W_L - B_L;
double K = (1-sinfai)/(1+sinfai);
double gammaSubmerged = gammaStat - gammaWater;
double gammaAvrg = (gammaStat + gammaDry)/2;
double b1 = b1Calculation(H);
double b2 = b1 + (H/4);
double Tf = .2*H;
double B = b2 + (2*Tf);
double Ht = H + Tf;
Intent resultsActivity = new Intent(MainActivity.this, Results.class);
startActivity(resultsActivity);
// then all the calculation are ignored?
// It seems you wants to use the calculation result to show
// in another Activity,
// then you are expected to use
// Intent.putExtra() and Intent.getExtra()
}
});
}
public double b1Calculation(double h) {
double bTrial = 0;
if (0.2*h > .5){
bTrial = .5;
}
return bTrial;
}
}
Кроме того, лучше, если вы поместите свой logcat.Нет никаких причин, по которым в logcat происходит сбой приложения?"не начался"?или около того.