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" />

War es hilfreich?

Lösung

Gemäß Ihrem Code und dem Layout ist das Problem mit der edittesxt id.

Sie versuchen, die EDITTENT-Ansicht mit der -Taste ID

zu finden.

Ändern Sie in Ihrem Layout diese Zeile

generasacodicetagpre.

bis

generasacodicetagpre.

auch das andere Problem ist in settExt bis edittext

generasacodicetagpre.

total ist ein int .Es sollte eine Zeichenfolge sein oder sollte eine gültige String-Ressourcen-ID

sein

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 Ressourcen-ID zu übergeben oder konvertieren Sie die int so ein, dass sie so einwandfrei ist

generasacodicetagpre.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top