erste App und schon gescheitert

  • 9 Antworten
  • Neuester Beitrag
Diskutiere erste App und schon gescheitert im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

mel_forgotit

Neues Mitglied
Hallo in die Runde,

ich habe anhand eines Tutorials so ne Art Trinkgeldrechner entwickelt. code scheint problemfrei zu sein. aber die app funktioniert trotzdem nicht. und ich bekomme ne grosse Liste von Problemen aufgeliste. Ich blicke da nicht mehr durch, da ich schon sehr lange daran gearbeitet hab. Vielleicht kann mir jemand sagen was das problem ist. ich weiss das ist viel code, ich hoffe trotzdem jemand hat die Geduld..

danke!

Grüße,
Mel

code
Code:
package com.newthinktank.crazytipcalc;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
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.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.os.Build;

public class CrazyTipCalc extends ActionBarActivity {
	
	private static final String TOTAl_BILL = "TOTAL_BILL";
	private static final String CURRENT_TIP = "CURRENT_TIP";
	private static final String BILL_WITHOUT_TIP = "BILL_WITHOUT_TIP";
	
	private double billBeforeTip;
	private double tipAmount;
	private double finalBill;
	
	EditText billBeforeTipET;
	EditText tipAmountET;
	EditText finalBillET;
	
	SeekBar tipSeekBar;
	
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crazy_tip_calc);

        if (savedInstanceState == null) {
              
        	billBeforeTip = 0.0;
        	tipAmount = .15;
        	finalBill = 0.0;
        } else{
        	billBeforeTip = savedInstanceState.getDouble(BILL_WITHOUT_TIP);
        	tipAmount = savedInstanceState.getDouble(CURRENT_TIP);
        	finalBill = savedInstanceState.getDouble(TOTAl_BILL);
        }
        billBeforeTipET = (EditText) findViewById(R.id.billEditText);
    	tipAmountET=(EditText) findViewById(R.id.tipEditText);
    	finalBillET=(EditText) findViewById(R.id.finalBillEditText);
    	
    	tipSeekBar = (SeekBar) findViewById(R.id.changeTipSeekBar);
    	
    	tipSeekBar.setOnSeekBarChangeListener(tipSeekBarListener);
    	
    	billBeforeTipET.addTextChangedListener(billBeforeTipListener);
    }
	
	private TextWatcher billBeforeTipListener = new TextWatcher(){

		@Override
		public void afterTextChanged(Editable arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
				int arg3) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTextChanged(CharSequence arg0, int arg1, int arg2,
				int arg3) {
			
					try{
						
						billBeforeTip = Double.parseDouble(arg0.toString());
					} catch (NumberFormatException e){
						billBeforeTip = 0.0;
					}
					
					updateBillAndFinalBill();
		}
	};

	private void updateBillAndFinalBill() {
		double tipAmount = Double.parseDouble(tipAmountET.getText().toString());
		
		double finalBill = billBeforeTip + billBeforeTip*tipAmount;
		
		finalBillET.setText(String.format("%02f", finalBill));
	}
	
	
	protected void onSaveInstanceState(Bundle outState){
		super.onSaveInstanceState(outState);
		
		outState.putDouble(TOTAl_BILL, finalBill);
		outState.putDouble(CURRENT_TIP, tipAmount);
		outState.putDouble(BILL_WITHOUT_TIP, billBeforeTip);
		
	}
	
	private OnSeekBarChangeListener tipSeekBarListener = new OnSeekBarChangeListener() {
		
		@Override
		public void onStopTrackingTouch(SeekBar arg0) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onStartTrackingTouch(SeekBar arg0) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
			
			tipAmount= (tipSeekBar.getProgress())*.01;
			
			tipAmountET.setText(String.format("%.02f", tipAmount));
			
			updateBillAndFinalBill();
		}
	};
	
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.crazy_tip_calc, 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_crazy_tip_calc, container, false);
            return rootView;
        }
    }

}
meine strings:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">CrazyTipCalc</string>
<string name="action_settings">Settings</string>

<string name="bill_text_view">Bill</string>
<string name="bill_edit_text">0.0</string>

<string name="tip_text_view">Tip</string>
<string name="tip_edit_text">0.15</string>

<string name="final_text_view">Final Bill</string>
<string name="final_bill_edit_text">0.15</string>

<string name="change_tip_text_view">Tip</string>

</resources>
und die xml für graphical layout

Code:
<RelativeLayout 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"
    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.newthinktank.crazytipcalc.CrazyTipCalc$PlaceholderFragment" >

    <EditText
        android:id="@+id/tipEditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/tipTextView"
        android:layout_alignBottom="@+id/tipTextView"
        android:layout_toRightOf="@+id/tipTextView"
        android:ems="4"
        android:inputType="numberDecimal" />

    <TextView
        android:id="@+id/tipTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/billEditText"
        android:layout_alignBottom="@+id/billEditText"
        android:layout_marginLeft="16dp"
        android:layout_toRightOf="@+id/billEditText"
        android:text="@string/tip_text_view" />

    <TextView
        android:id="@+id/finalBiltextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tipTextView"
        android:layout_below="@+id/tipEditText"
        android:layout_marginTop="52dp"
        android:text="@string/final_text_view" />

    <EditText
        android:id="@+id/finalBillEditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/tipEditText"
        android:layout_below="@+id/finalBiltextView"
        android:ems="5"
        android:inputType="numberDecimal" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/changeTipTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/finalBillEditText"
        android:layout_alignLeft="@+id/billTextView"
        android:text="@string/change_tip_text_view" />

    <TextView
        android:id="@+id/billTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="27dp"
        android:text="@string/bill_text_view" />

    <EditText
        android:id="@+id/billEditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/billTextView"
        android:layout_alignBottom="@+id/billTextView"
        android:layout_toRightOf="@+id/changeTipTextView"
        android:ems="5"
        android:inputType="numberDecimal"
        android:text="@string/bill_edit_text" />

    <SeekBar
        android:id="@+id/changeTipSeekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/billEditText"
        android:layout_alignTop="@+id/finalBillEditText"
        android:layout_marginTop="19dp"
        android:progress="15" />
    
</RelativeLayout>
und jetzt kommt die superlange fehlerliste.

04-15 18:36:03.680: D/AndroidRuntime(999): Shutting down VM
04-15 18:36:03.680: W/dalvikvm(999): threadid=1: thread exiting with uncaught exception (group=0xb2aeeba8)
04-15 18:36:03.710: E/AndroidRuntime(999): FATAL EXCEPTION: main
04-15 18:36:03.710: E/AndroidRuntime(999): Process: com.newthinktank.crazytipcalc, PID: 999
04-15 18:36:03.710: E/AndroidRuntime(999): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.newthinktank.crazytipcalc/com.newthinktank.crazytipcalc.CrazyTipCalc}: java.lang.NullPointerException
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.os.Looper.loop(Looper.java:136)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-15 18:36:03.710: E/AndroidRuntime(999): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 18:36:03.710: E/AndroidRuntime(999): at java.lang.reflect.Method.invoke(Method.java:515)
04-15 18:36:03.710: E/AndroidRuntime(999): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-15 18:36:03.710: E/AndroidRuntime(999): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-15 18:36:03.710: E/AndroidRuntime(999): at dalvik.system.NativeStart.main(Native Method)
04-15 18:36:03.710: E/AndroidRuntime(999): Caused by: java.lang.NullPointerException
04-15 18:36:03.710: E/AndroidRuntime(999): at com.newthinktank.crazytipcalc.CrazyTipCalc.onCreate(CrazyTipCalc.java:56)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.Activity.performCreate(Activity.java:5231)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-15 18:36:03.710: E/AndroidRuntime(999): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-15 18:36:03.710: E/AndroidRuntime(999): ... 11 more
04-15 18:36:11.580: I/Process(999): Sending signal. PID: 999 SIG: 9
04-15 18:36:18.090: D/AndroidRuntime(1045): Shutting down VM
04-15 18:36:18.090: W/dalvikvm(1045): threadid=1: thread exiting with uncaught exception (group=0xb2aeeba8)
04-15 18:36:18.130: E/AndroidRuntime(1045): FATAL EXCEPTION: main
04-15 18:36:18.130: E/AndroidRuntime(1045): Process: com.newthinktank.crazytipcalc, PID: 1045
04-15 18:36:18.130: E/AndroidRuntime(1045): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.newthinktank.crazytipcalc/com.newthinktank.crazytipcalc.CrazyTipCalc}: java.lang.NullPointerException
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.os.Looper.loop(Looper.java:136)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-15 18:36:18.130: E/AndroidRuntime(1045): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 18:36:18.130: E/AndroidRuntime(1045): at java.lang.reflect.Method.invoke(Method.java:515)
04-15 18:36:18.130: E/AndroidRuntime(1045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-15 18:36:18.130: E/AndroidRuntime(1045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-15 18:36:18.130: E/AndroidRuntime(1045): at dalvik.system.NativeStart.main(Native Method)
04-15 18:36:18.130: E/AndroidRuntime(1045): Caused by: java.lang.NullPointerException
04-15 18:36:18.130: E/AndroidRuntime(1045): at com.newthinktank.crazytipcalc.CrazyTipCalc.onCreate(CrazyTipCalc.java:56)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.Activity.performCreate(Activity.java:5231)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-15 18:36:18.130: E/AndroidRuntime(1045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-15 18:36:18.130: E/AndroidRuntime(1045): ... 11 more
04-15 18:38:10.871: D/AndroidRuntime(1159): Shutting down VM
04-15 18:38:10.871: W/dalvikvm(1159): threadid=1: thread exiting with uncaught exception (group=0xb2aeeba8)
04-15 18:38:10.931: E/AndroidRuntime(1159): FATAL EXCEPTION: main
04-15 18:38:10.931: E/AndroidRuntime(1159): Process: com.newthinktank.crazytipcalc, PID: 1159
04-15 18:38:10.931: E/AndroidRuntime(1159): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.newthinktank.crazytipcalc/com.newthinktank.crazytipcalc.CrazyTipCalc}: java.lang.NullPointerException
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.os.Looper.loop(Looper.java:136)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-15 18:38:10.931: E/AndroidRuntime(1159): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 18:38:10.931: E/AndroidRuntime(1159): at java.lang.reflect.Method.invoke(Method.java:515)
04-15 18:38:10.931: E/AndroidRuntime(1159): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-15 18:38:10.931: E/AndroidRuntime(1159): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-15 18:38:10.931: E/AndroidRuntime(1159): at dalvik.system.NativeStart.main(Native Method)
04-15 18:38:10.931: E/AndroidRuntime(1159): Caused by: java.lang.NullPointerException
04-15 18:38:10.931: E/AndroidRuntime(1159): at com.newthinktank.crazytipcalc.CrazyTipCalc.onCreate(CrazyTipCalc.java:56)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.Activity.performCreate(Activity.java:5231)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-15 18:38:10.931: E/AndroidRuntime(1159): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-15 18:38:10.931: E/AndroidRuntime(1159): ... 11 more
04-15 18:38:17.291: I/Process(1159): Sending signal. PID: 1159 SIG: 9
04-15 18:38:51.411: D/AndroidRuntime(1194): Shutting down VM
04-15 18:38:51.411: W/dalvikvm(1194): threadid=1: thread exiting with uncaught exception (group=0xb2aeeba8)
04-15 18:38:51.441: E/AndroidRuntime(1194): FATAL EXCEPTION: main
04-15 18:38:51.441: E/AndroidRuntime(1194): Process: com.newthinktank.crazytipcalc, PID: 1194
04-15 18:38:51.441: E/AndroidRuntime(1194): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.newthinktank.crazytipcalc/com.newthinktank.crazytipcalc.CrazyTipCalc}: java.lang.NullPointerException
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.os.Looper.loop(Looper.java:136)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-15 18:38:51.441: E/AndroidRuntime(1194): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 18:38:51.441: E/AndroidRuntime(1194): at java.lang.reflect.Method.invoke(Method.java:515)
04-15 18:38:51.441: E/AndroidRuntime(1194): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-15 18:38:51.441: E/AndroidRuntime(1194): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-15 18:38:51.441: E/AndroidRuntime(1194): at dalvik.system.NativeStart.main(Native Method)
04-15 18:38:51.441: E/AndroidRuntime(1194): Caused by: java.lang.NullPointerException
04-15 18:38:51.441: E/AndroidRuntime(1194): at com.newthinktank.crazytipcalc.CrazyTipCalc.onCreate(CrazyTipCalc.java:56)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.Activity.performCreate(Activity.java:5231)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-15 18:38:51.441: E/AndroidRuntime(1194): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-15 18:38:51.441: E/AndroidRuntime(1194): ... 11 more
04-15 18:38:55.631: I/Process(1194): Sending signal. PID: 1194 SIG: 9
04-15 18:53:49.701: I/Process(1214): Sending signal. PID: 1214 SIG: 9
 
G

Gastuser

Ambitioniertes Mitglied
Er bringt die Meldung in folgender Zeile:

Code:
    	tipSeekBar.setOnSeekBarChangeListener(tipSeekBarListener);
Hoffe das Hilft dir erstmal weiter
 
M

meganeura

App-Anbieter (gewerbl.)
Soetwas wird noch sehr oft vorkommen, deshalb solltest du lernen den LogCat-Output zu verstehen. Dort ist zu sehen, dass eine NullPointerException geworfen wird und zwar in der Zeile die Gastuser schon rausgesucht hat. Das heißt dort ist etwas Null was nicht Null sein darf. Das einzige das du dort machst ist eine Methode in tipSeekBar aufzurufen, also liegt die Vermutung nahe, dass tipSeekBar Null ist. Nun musst du dir ansehen warum das so ist. Direkt darüber initialisierst du tipSeekBar:

PHP:
tipSeekBar = (SeekBar) findViewById(R.id.changeTipSeekBar);
In dieser Zeile scheint also etwas falsch zu laufen, sonst wäre die Variable nicht Null. Kontrolliere mal ob es im Layout-File wirklich ein Element mit der ID changeTipSeekBar gibt und ob du dieses auch aus dem korrekten Layout-File ausliest. Es muss dasjenige sein, welches du mit setContentView geseetzt hast.
 
K

K2DaC

Neues Mitglied
Also so wie mir es scheint fehlen dir etwas die Grundlagen von Activitys, Fragments und was wo welche Gültigkeit hat.

All deine Objekte müssten "null" sein (billBeforeTipET, tipAmountET, finalBillET, tipSeekBar ...).

Es knallt an der stelle, wo du die tipSeekBar benutzt bzw. ihr was zuweist.

Wenn ich dein Layout richtig deute, definierest du all diese UI-Elemente im Layout des Fragments. Also kannst du sie auch nur dort nutzen. In der Activity knallt es logischerweise.

Du muss all die Logik in das Fragment packen, denn dort kannst du auch auf die Elemente zugreifen
 
G

Gastuser

Ambitioniertes Mitglied
K2DaC schrieb:
Also so wie mir es scheint fehlen dir etwas die Grundlagen von Activitys, Fragments und was wo welche Gültigkeit hat.

All deine Objekte müssten "null" sein (billBeforeTipET, tipAmountET, finalBillET, tipSeekBar ...).

Es knallt an der stelle, wo du die tipSeekBar benutzt bzw. ihr was zuweist.

Wenn ich dein Layout richtig deute, definierest du all diese UI-Elemente im Layout des Fragments. Also kannst du sie auch nur dort nutzen. In der Activity knallt es logischerweise.

Du muss all die Logik in das Fragment packen, denn dort kannst du auch auf die Elemente zugreifen
Wär ich vorsichtig mit der Aussage. Vom Vorgehen passt das eig. schon wie er das macht. Oder ich hab jetzt irgendwas gravierendes übersehen. Dann nehme ich natürlich alles zurück^^

Also wenn das Referenzieren schon falsch wäre, hätte es schon viel früher knallen müssen?
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Eigentlich sieht der Code richtig aus (Fragements werden für kleine Apps eh überbewertet :D).

Ich würde mal drauf tippen, dass wir im Forum nicht die Layoutdatei sehen, die von der App geladen wird. Gibt es im res Verzeichnis noch andere Layoutdateien als res/layout/activity_crazy_tip_calc.xml?
 
markus.tullius

markus.tullius

Experte
Er lädt das falsche Layout in setContentView() geladen. Seine Views befinden sich im Layout des Fragments. Das sieht man an der Zeile:
Code:
tools:context="com.newthinktank.crazytipcalc.CrazyTipCalc$PlaceholderFragment"
Er hat aber das Fragment der Activity geladen. Die IDE meckert nicht, weil die id in den Resourcen vorhanden sind.

Zu Runtime findet die Aktivity die ids nicht im Layout, also haben alle views den Wert null. Und es endet in einem NullPointerException.
 
G

Gastuser

Ambitioniertes Mitglied
ok, Danke für deine ausführliche Antwort. Kannst du noch ergänzen warum er dann trotzdem weiter läuft? Hätte jetzt erwartet, dass er 2 Zeilen weiter oben schon aussteigt.
 
G

Gastuser

Ambitioniertes Mitglied
Ok, grad die Methode genau angeschaut. Hätte nicht gedacht, dass da Methoden sind die noch null zurück geben anstatt ne exception^^

Danke nochmal für deine Antwort
 
Ähnliche Themen - erste App und schon gescheitert Antworten Datum
6
2
3