Java týden
30 % bodů zdarma na online výuku díky naší Slevové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se Javy.
Avatar
Matěj Přerovský:2.12.2019 16:52

Ahoj,
mám problém, že mi aplikace při každém startu spadne. Nechápu co jsem udělal špatně, ale výstup chyby je:

12-01 16:42:39.508 26510-26510/cz.botaniculus.cloner E/AndroidRuntime: FATAL EXCEPTION: main
    Process: cz.botaniculus.cloner, PID: 26510
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cz.botaniculus.cloner/cz.botaniculus.cloner.MainActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2264)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:5292)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
        at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:249)
        at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
        at androidx.appcompat.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
        at androidx.appcompat.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
        at cz.botaniculus.cloner.MainActivity.<init>(MainActivity.java:12)
        at java.lang.Class.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1215)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
        at android.app.ActivityThread.access$800(ActivityThread.java:151) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
        at android.os.Handler.dispatchMessage(Handler.java:110) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:5292) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 
        at dalvik.system.NativeStart.main(Native Method) 

Díky moc za odpovědi :-)

Odpovědět
2.12.2019 16:52
42
Avatar
Odpovídá na Matěj Přerovský
Matúš Olejník:2.12.2019 17:57

Ahoj, čo tak poslať aj kód? :D

Nahoru Odpovědět
2.12.2019 17:57
/* I am not sure why this works but it fixes the problem */
Avatar
Matěj Přerovský:2.12.2019 18:33

Sry.. ještě to ale nic nedělá, zastavilo mě to...

MainActivity.java

package cz.botaniculus.cloner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    EditText napisEditText = (EditText)findViewById(R.id.napisEditText);
    Button klonovatBtn = (Button) findViewById(R.id.klonovatBtn);
    TextView outputTextView = (TextView) findViewById(R.id.outputTextView);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        napisEditText.setHint("hahahiah");
        klonovatBtn.setText("HEhjegguihFhk");
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".MainActivity"
    >

    <EditText
        android:id="@+id/napisEditText"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:hint="@string/hint"
        android:layout_centerHorizontal="true"/>

    <Button
        android:id="@+id/klonovatBtn"
        android:layout_centerHorizontal="true"
        android:text="@string/klonovatBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/napisEditText"
        android:layout_margin="20dp"
        />

    <TextView
        android:id="@+id/outputTextView"
        android:layout_height="23dp"
        android:layout_width="325dp"
        android:layout_below="@+id/klonovatBtn"
        android:layout_alignParentBottom="true"
        android:layout_margin="20dp"
        android:layout_centerHorizontal="true"
        android:text="sdhfaskjsg"
        android:textSize="50dp"
        android:textColor="#000000"/>


</RelativeLayout>

Pak mám ještě něco ve strings.xml, ale to by mělo fungovat
Díky :-)

Nahoru Odpovědět
2.12.2019 18:33
42
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Matěj Přerovský
Matúš Olejník:2.12.2019 19:09

Najprv musí zbehnúť setContentView a až potom môžeš hľadať view podľa id, takže tú inicializáciu globálnych premenných presuň pod setContentView.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
2.12.2019 19:09
/* I am not sure why this works but it fixes the problem */
Avatar
Odpovídá na Matúš Olejník
Matěj Přerovský:2.12.2019 19:22

No jo vlastně... jsem ale hloupej... ;-)

Díky

Nahoru Odpovědět
2.12.2019 19:22
42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.