Ich bin neu dazu und ich versuche, Code aus einer anderen Antwort zu folgen. Ich habe drei Textfelder, um die Zahlen einzugeben, die für die Berechnung verwendet werden, und eine Schaltfläche darunter, die einen Text unterhalb der Antwort ändern soll. Es werden keine Fehler angezeigt, wenn ich die App starte, aber wenn ich den Knopf drücke, stürzt die App ab und ich bekomme Fehlermeldungen im Log. Dies ist der Code:Einen Rechner in Android machen. Die App erscheint auf dem Emulator ohne Fehler, aber wenn ich den Berechnen Knopf drücke, stürzt es ab
public class CalculatorActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
class NewActivity extends CalculatorActivity {
//Declare textviews as fields, so they can be accessed throughout the activity.
EditText editTextSubsPrevious;
EditText editTextSubsNow;
EditText editTextDays;
TextView calcText;
Button calcButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
//Bind the EditText views
editTextSubsPrevious = (EditText) findViewById(R.id.editTextSubsPrevious);
editTextSubsNow = (EditText) findViewById(R.id.editTextSubsNow);
editTextDays = (EditText) findViewById(R.id.editTextDays);
calcButton = (Button) findViewById(R.id.calcButton);{
View.OnClickListener onClickListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
//When the button is clicked, call the calculate method.
calculate();
}
};
}
}
public void calculate(){
//get entered texts from the edittexts,and convert to integers.
Double value1 = Double.parseDouble(editTextSubsPrevious.getText().toString());
Double value2 = Double.parseDouble(editTextSubsNow.getText().toString());
Double value3 = Double.parseDouble(editTextDays.getText().toString());
//do the calculation
Double difference = (value2 - value1)/7;
Double percent = (difference/325);
Double amount;
amount = value2 * Math.pow(1 + percent, value3);
calcText.setText(amount.toString());
}
}
}
}
Hier ist die Fehlermeldung:
FATAL EXCEPTION: main
Process: com.pausetheapp.futurefollowerandsubscribercalculator, PID: 3420
java.lang.IllegalStateException: Could not find method sendMessage(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'calcButton'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:325)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Hier ist die XML-Datei:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.pausetheapp.futurefollowerandsubscribercalculator.CalculatorActivity"
tools:showIn="@layout/activity_calculator">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/textViewTitle"
android:id="@+id/textViewTitle"
android:textAlignment="center"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextSubsPrevious"
android:layout_marginTop="28dp"
android:layout_below="@+id/textViewTitle"
android:layout_centerHorizontal="true"
android:hint="@string/previousSubsTextField"
android:width="300dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextSubsNow"
android:layout_below="@+id/editTextSubsPrevious"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:width="300dp"
android:hint="@string/currentSubsTextField" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextDays"
android:hint="@string/daysTextField"
android:width="300dp"
android:layout_marginTop="30dp"
android:layout_below="@+id/editTextSubsNow"
android:layout_alignLeft="@+id/editTextSubsNow"
android:layout_alignStart="@+id/editTextSubsNow" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/accuracyText"
android:id="@+id/textViewAccuracy"
android:layout_below="@+id/editTextDays"
android:layout_alignLeft="@+id/editTextDays"
android:layout_alignStart="@+id/editTextDays"
android:textSize="10dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculateButton"
android:id="@+id/calcButton"
android:layout_marginTop="42dp"
android:layout_below="@+id/textViewAccuracy"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/calcDays"
android:id="@+id/calcText"
android:layout_marginTop="22dp"
android:textSize="25dp"
android:layout_below="@+id/calcButton"
android:layout_centerHorizontal="true"
android:gravity="center" />
ich diese Linie nur hinzugefügt die Java-Datei.
calcText = (TextView) findViewById(R.id.calcText);
Ich korrigierte den Fehler nur Eigentlich verwenden sollten, müssen verwenden, aber die Taste noch funktioniert nicht. – PauseTheCat
Es sieht so aus, als ob Sie den calcText nicht in Ihrem Code erstellen. Wenn Sie versuchen, setText auf calcText aufzurufen (was null ist, weil ich nicht sehe, wo Sie es erstellt haben), stürzt die App ab. –
Könnten Sie? Bitte teilen Sie Ihre Layout-Datei auch? – W0rmH0le