Absturz der Android-Laufzeit
-
21-12-2019 - |
Frage
Ich bin neu in der Android-Entwicklung und versuche, meine erste Anwendung zu erstellen.Ich versuche gerade, einen einfachen Zähler zu erstellen, der es dem Benutzer ermöglicht, die Gesamtsumme um +1, -1, +5, -5 zu erhöhen, wobei der Startwert 20 ist.Wenn ich versuche, meine App auszuführen, stürzt sie immer sofort ab und ich weiß nicht, wie ich das Problem beheben soll.
Hier ist mein Code:
package com.example.mtglifecounter;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
int Total=20;
Button Plus1, Min1, Plus5, Min5;
EditText Display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Total = 20;
Plus1 = (Button) findViewById(R.id.btnPlus1);
Min1 = (Button) findViewById(R.id.btnMin1);
Plus5 = (Button) findViewById(R.id.btnPlus5);
Min5 = (Button) findViewById(R.id.btnmin5);
Display = (EditText) findViewById(R.id.tvTotal);
Display.setText(Total);
Plus1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Adds 1 to the counter
Total = Total + 1;
Display.setText(Total);
}
});
Min1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Subtract 1 from counter
Total = Total - 1;
Display.setText(Total);
}
});
Plus5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Adds 1 to the counter
Total = Total + 5;
Display.setText(Total);
}
});
Min5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Subtract 1 from counter
Total = Total - 5;
Display.setText(Total);
}
});
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.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();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
}
}
Ich habe auch einen Logcat, den ich gespeichert habe:
04-11 11:56:27.433: D/AndroidRuntime(1459): Shutting down VM
04-11 11:56:27.433: W/dalvikvm(1459): threadid=1: thread exiting with uncaught exception (group=0xb1aabba8)
04-11 11:56:27.453: E/AndroidRuntime(1459): FATAL EXCEPTION: main
04-11 11:56:27.453: E/AndroidRuntime(1459): Process: com.example.mtglifecounter, PID: 1459
04-11 11:56:27.453: E/AndroidRuntime(1459): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mtglifecounter/com.example.mtglifecounter.MainActivity}: java.lang.NullPointerException
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.os.Handler.dispatchMessage(Handler.java:102)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.os.Looper.loop(Looper.java:136)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-11 11:56:27.453: E/AndroidRuntime(1459): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 11:56:27.453: E/AndroidRuntime(1459): at java.lang.reflect.Method.invoke(Method.java:515)
04-11 11:56:27.453: E/AndroidRuntime(1459): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-11 11:56:27.453: E/AndroidRuntime(1459): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-11 11:56:27.453: E/AndroidRuntime(1459): at dalvik.system.NativeStart.main(Native Method)
04-11 11:56:27.453: E/AndroidRuntime(1459): Caused by: java.lang.NullPointerException
04-11 11:56:27.453: E/AndroidRuntime(1459): at com.example.mtglifecounter.MainActivity.onCreate(MainActivity.java:34)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.Activity.performCreate(Activity.java:5231)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-11 11:56:27.453: E/AndroidRuntime(1459): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-11 11:56:27.453: E/AndroidRuntime(1459): ... 11 more
04-11 11:56:33.373: I/Process(1459): Sending signal. PID: 1459 SIG: 9
Ich würde mich wirklich über jede Hilfe freuen, die Sie mir geben können, da dies mein erster Versuch mit Android ist.
Danke
Hier ist die Aktivität_Main.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mtglifecounter.MainActivity"
tools:ignore="MergeRootFrame" >
<RelativeLayout
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"
tools:context="com.example.mtglifecounter.MainActivity$PlaceholderFragment" >
<EditText
android:id="@+id/etTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/LifeTotal"
android:ems="10"
android:inputType="number"
android:text="20" />
<Button
android:id="@+id/btnmin5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btnPlus5"
android:layout_alignBottom="@+id/btnPlus5"
android:layout_alignLeft="@+id/btnMin1"
android:onClick="On_Clicked"
android:text="-5" />
<Button
android:id="@+id/btnMin1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btnPlus1"
android:layout_alignBottom="@+id/btnPlus1"
android:layout_alignLeft="@+id/LifeTotal"
android:layout_marginLeft="37dp"
android:onClick="On_Clicked"
android:text="-1" />
<Button
android:id="@+id/btnPlus5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/tvTotal"
android:layout_below="@+id/btnPlus1"
android:layout_marginRight="60dp"
android:layout_marginTop="25dp"
android:onClick="On_Clicked"
android:text="+5" />
<Button
android:id="@+id/btnPlus1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btnPlus5"
android:layout_below="@+id/LifeTotal"
android:layout_marginTop="44dp"
android:onClick="On_Clicked"
android:text="+1" />
<TextView
android:id="@+id/LifeTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvTotal"
android:layout_alignParentLeft="true"
android:layout_marginLeft="21dp"
android:text="Life Total:"
android:textSize="@dimen/abc_action_bar_title_text_size" />
Lösung
Gemäß Ihrem Code und dem Layout ist das Problem mit der
Sie versuchen, die
Ändern Sie in Ihrem Layout diese Zeile
generasacodicetagpre.bis
generasacodicetagpre.auch das andere Problem ist in settExt bis edittext
generasacodicetagpre. total ist ein
Wenn Sie eine Ganzzahl einstellen, wird es als Ressourcen-ID
betrachtet.Dies, was die SettExt-Methode macht ...
generasacodicetagpre. Wechseln Sie entweder den INT, um die richtige Zeichenfolge
Andere Tipps
Sie sollten einen Debugger verwenden.Seit jede Zeile in Ihrer Oncreate-Methode, bis Sie einen Wert sehen, der falsch ist - wahrscheinlich ein Nullzeiger.Sie sagen nicht, wie Sie Ihre Bewerbung gebaut haben, jedoch sowohl Eclipse- als auch Android-Studio verwenden, indem Sie die Zeile mit dem Debug-Stepping von Line-Debuging ermöglichen.Verwenden Sie diese Funktion und ermöglicht es Ihnen, Ihre Fehler schnell und einfach zu finden.
https://developer.android.com/tools/debugging/debugging-projects.html
Stellen Sie sicher, dass all dies in Ihrem Layout vorhanden ist activity_mail.xml
Plus1 = (Button) findViewById(R.id.btnPlus1);
Min1 = (Button) findViewById(R.id.btnMin1);
Plus5 = (Button) findViewById(R.id.btnPlus5);
Min5 = (Button) findViewById(R.id.btnmin5);
Display = (EditText) findViewById(R.id.tvTotal);
Und damit meine ich, prüfen Sie, ob es eine gibt Button
mit Ausweis btnPlus1
, dann prüfen Sie, ob es eine gibt Button
mit Ausweis btnMin1
, und so weiter.
Da die Ausnahme a ist NullPointerException
Das Problem liegt wahrscheinlich darin, dass Sie eine ID falsch eingegeben haben und eine (oder mehrere) davon zurückkommen null
.