Мое приложение не работает .. Оно завершает отладку, но не запускается - PullRequest
0 голосов
/ 27 ноября 2018

Я не знаю, что не так с моим приложением.Я только что закончил макет, но после установки на моем устройстве он не запустился.Кто-нибудь может мне помочь?

Вот мой XML-код:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:layout_marginTop="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="Please Enter All Data In TON and METER CUBED ONLY" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="12dp">

            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">

                <EditText
                    android:id="@+id/H"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Height Of The Wall" />

                <EditText
                    android:id="@+id/gamma_stat"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Saturated Specific Weight " />

                <EditText
                    android:id="@+id/gamma_dry"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Dry Specific Weight " />

                <EditText
                    android:id="@+id/gamma_water"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Water Specific Weight " />

                <EditText
                    android:id="@+id/gamma_concrete"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Concrete Specific Weight " />

                <EditText
                    android:id="@+id/live_load"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Value Of Live Load " />

                <EditText
                    android:id="@+id/fai"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Angle Of Internal Fraction " />

                <EditText
                    android:id="@+id/water_high_level"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter High Water Level" />

                <EditText
                    android:id="@+id/street_level"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Street Level" />

                <EditText
                    android:id="@+id/bottom_level"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter bottom Level" />

                <EditText
                    android:id="@+id/fraction_factor"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Fraction Factor" />

                <EditText
                    android:id="@+id/allowable_stress"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="Enter Allowable Stress" />

            </LinearLayout>


            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

        </LinearLayout>

        <Button
            android:id="@+id/calculate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="10dp"
            android:text="calculate"
            android:textAllCaps="true" />

    </RelativeLayout>

</ScrollView>

Это довольно просто, но я не могу понять, что с ним не так?Вот краткое изложение кода и желаемого макета:

Резюме изображения кода: enter image description here

Вот мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.gravitywall">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Results"></activity>
    </application>

</manifest>

также здесьмой код Java:

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 {

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

    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;

    @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) {
                Intent resultsActivity = new Intent(MainActivity.this, Results.class);
                startActivity(resultsActivity);
            }
        });
    }

    public double b1Calculation(double h) {
        double bTrial = 0;
        if (0.2*h > .5){
            bTrial = .5;
        }
        return bTrial;
    }
}

1 Ответ

0 голосов
/ 27 ноября 2018

Во-первых, вы должны поместить все свои вычисления после фактического назначения.

Во-вторых, 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 происходит сбой приложения?"не начался"?или около того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...