Skocz do zawartości
kacper635

Crash aplikacji - Dyskusja Ogólna

    Rekomendowane odpowiedzi

    mmaciejow

    @kacper635

    Could not execute method for android:onClick

    Staraj się czytać logi tam masz informacje dokładnie co się dzieje oraz wskaże w której lini jest błąd. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @Coders Lab Zadziałało, dzięki bardzo. Jakby coś jeszcze nie działało to będę pisał.

    dodana zawartość

    Jeszcze teraz nie chce się włączyć bo w logach jest komunikat że 
    E/SQLiteLog: (1) table plandnia already exists

    a mam tylko jedną taką. Zmieniałem wersje sql lite i nie działa dalej

    //Edit działa już
     

    dodana zawartość

    Teraz jak klikam przycisk zapisz plan to mi wywala :<

     

    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.appnucleus.loginandregisteruser, PID: 4911
        java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference
            at com.appnucleus.loginandregisteruser.konf$1.onClick(konf.java:116)
            at android.view.View.performClick(View.java:5610)
            at android.view.View$PerformClick.run(View.java:22265)
            at android.os.Handler.handleCallback(Handler.java:751)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6077)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

     

    Edytowane przez kacper635
    • Lubię to! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    21 minut temu, kacper635 napisał:
    
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference
            at com.appnucleus.loginandregisteruser.konf$1.onClick(konf.java:116)

    W Activity konf w linii 116 masz błąd. TextView do którego się odwołujesz jest nullem. Zakładam że jest to linia:

    String d1 = inputg1.getText().toString();


    Możesz wrzucisz tutaj jeszcze xml ze layoutem dla swojej activity

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @Coders Lab A tutaj rzeczywiscie literówka jest. Powinno być 

    String d1 = inputd1.getText().toString();

     

    dodana zawartość

    Jednak dalej to samo. Podrzucam xml.

     

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 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_marginLeft="5dp"
        android:layout_marginTop="60dp"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".konf"
        tools:showIn="@layout/activity_konf">
    
    
        <TableLayout
            android:layout_width="370dp"
            android:stretchColumns="3"
            android:layout_height="wrap_content">
    
            <View
                android:layout_marginTop="5dp"
                android:layout_height="2dip"
                android:background="#FF909090" />
    
            <TableRow>
    
                <TextView
                    android:id="@+id/l0"
                    android:layout_width="wrap_content"
                    android:layout_marginTop="5dp"
                    android:layout_height="wrap_content"
                    android:background="@color/bg_login"
                    android:textSize="15dp"
                    android:text="Numer lekcji"
                    android:layout_column="1"
                    android:gravity="center"
                    />
    
                <TextView
                    android:id="@+id/g0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/bg_login"
                    android:layout_marginTop="5dp"
                    android:textSize="15dp"
                    android:text="    Początek lekcji    "
                    android:gravity="center"
                    />
    
                <TextView
                    android:id="@+id/d0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/bg_login"
                    android:layout_marginTop="5dp"
                    android:textSize="15dp"
                    android:text="Koniec lekcji"
                    android:gravity="center"
                    />
    
            </TableRow>
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
    
            <TableRow>
    
                <TextView
                    android:id="@+id/l1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:text="Lekcja 1"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"
                    />
                <EditText
                    android:id="@+id/d1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"
                    />
    
    
            </TableRow>
    
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
    
    
            <TableRow>
    
                <TextView
                    android:id="@+id/l2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:text="Lekcja 2"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"
                    />
    
                <EditText
                    android:id="@+id/d2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"                />
    
            </TableRow>
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
    
    
            <TableRow>
    
                <TextView
                    android:id="@+id/l3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:text="Lekcja 3"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"                />
                <EditText
                    android:id="@+id/d3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"                />
    
            </TableRow>
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
    
            <TableRow>
    
                <TextView
                    android:id="@+id/l4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:text="Lekcja 4"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"                />
                <EditText
                    android:id="@+id/d4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"                />
    
            </TableRow>
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
    
            <TableRow>
    
                <TextView
                    android:id="@+id/l5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:text="Lekcja 5"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"                />
                <EditText
                    android:id="@+id/d5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"                />
    
            </TableRow>
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
            <TableRow>
    
                <TextView
                    android:id="@+id/l6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:text="Lekcja 6"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"                />
                <EditText
                    android:id="@+id/d6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"                />
    
            </TableRow>
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
            <TableRow>
    
                <TextView
                    android:id="@+id/l7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
    
                    android:background="@color/main_bk"
                    android:layout_marginBottom="5dp"
                    android:textSize="15dp"
                    android:text="Lekcja 7"
                    android:layout_column="1"
                    />
    
                <EditText
                    android:id="@+id/g7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzinę"
                    android:gravity="center"                />
                <EditText
                    android:id="@+id/d7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bk"
                    android:textSize="15dp"
                    android:hint="Wpisz godzine"
                    android:gravity="center"                />
    
            </TableRow>
    
    
            <View
                android:layout_height="2dip"
                android:background="#FF909090" />
    
    
            <Button
                android:id="@+id/OnClickZapisz"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Zapisz plan"
                tools:layout_editor_absoluteX="145dp"
                tools:layout_editor_absoluteY="274dp" />
    
    
        </TableLayout>
    
    
    </android.support.constraint.ConstraintLayout>

     

    Edytowane przez kacper635

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @kacper635  Pole grupa nie jest zainicjowane. Po usunięciu poniższego kodu aplikacja działa

     String grupa = inputgrupa.getText().toString();

     

    • Piwko! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Godzinę temu, Coders Lab napisał:

    @kacper635  Pole grupa nie jest zainicjowane. Po usunięciu poniższego kodu aplikacja działa

    
     String grupa = inputgrupa.getText().toString();

     

    Już to rozwiązałem. Dodałem w xml textview z grupą, a w java zrobiłem 

    inputgrupa = findViewById(R.id.grupa13);

    I zadziałało.

    dodana zawartość

    @Coders Lab  jeszcze jedno pytanie. Jak będzie wyglądał warunek logiczny w momencie w którym chcę jakby "przepuścić" plan do bazy danych w momencie gdy w godzinie rozpoczęcia lekcji jest uzupełnione pole i w godzinie zakończenia lekcji lub oba są nie uzupełnione (np okienko ma uczeń) a jeśli jest jedno pole puste to wyskakuje komunikat że nie można dodać godzin?
    Mam coś takiego

     OnClickZapisz.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    String d1 = inputd1.getText().toString();
                    String g1 = inputg1.getText().toString();
                    String g2 = inputg2.getText().toString();
                    String d2 = inputd2.getText().toString();
                    String g3 = inputg3.getText().toString();
                    String d3 = inputd3.getText().toString();
                    String g4 = inputg4.getText().toString();
                    String d4 = inputd4.getText().toString();
                    String g5 = inputg5.getText().toString();
                    String d5 = inputd5.getText().toString();
                    String g6 = inputg6.getText().toString();
                    String d6 = inputd6.getText().toString();
                    String g7 = inputg7.getText().toString();
                    String d7 = inputd7.getText().toString();
                    String grupa = inputgrupa.getText().toString();
    
    
                    if (g1.isEmpty() != d1.isEmpty() || g2.isEmpty() != d2.isEmpty()
                            || g3.isEmpty() != d3.isEmpty() || g4.isEmpty() != d4.isEmpty()
                            || g5.isEmpty() != d5.isEmpty() || g6.isEmpty() != d6.isEmpty()
                            || g7.isEmpty() != d7.isEmpty()) {
    
                      
                        godziny("dodajgodziny", g1, d1, g2, d2, g3, d3, g4, d4, g5, d5, g6, d6, g7, d7, grupa);
                    } else
    
                    {
                        Toast.makeText(getApplicationContext(),
                                "Jedno pole nie może pozostać puste!", Toast.LENGTH_LONG)
                                .show();
                    }
                }
            });

    Gdzie zmienna "g" to lewa strona tabeli a "d" to prawa kolumna tabeli?
    Testowałem i w momencie kiedy mam w obu kolumnach wpisane godziny to wyskakuje komunikat że jedno pole nie może pozostać puste.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @kacper635  Pierwsza zasada - prawidłowo nazywać zmienne. Tutaj nie wiadomo czym jest g1 a czym jest d1. Utrudniasz sobie też zadanie wpisując godzinę końca lekcji. Lekcje zawsze trwają tyle samo - 45 minut. Czyli wystarczy zapisywać tylko godzinę początku lekcji. Godzinę końca lekcji  można obliczyć i może nawet wyświetlić się automatycznie po wpisaniu początku lekcji ;) 

    Godziny rozpoczęcia lekcji w planie są stałe (dla danej szkoły), zmieniają się tylko zajęcia, które odbywają się w tym czasie. Więc interesującą informacją dla ucznia będzie czy w danym czasie ma jakieś zajęcia. Gdzie "okienko" też można uznać za pewną formę zajęć. Czyli jak chcesz uzupełnić i dodać do bazy danych godziny w których zaczynają i kończą się lekcje lepiej byłoby to zrobić na poziomie całej szkoły a nie grupy. Dla grupy istotne będzie czy na pierwszej lekcji (trwającej od 8:00 do 8:45 <- informacja z bazy danych z tabelki mającej nazwę np. taką: Godzina_rozpoczecia_zakonczenia_lekcji) ma WF czy Informatykę. W takim przypadku, żadne z tych pól nie może być puste:

    if (   !g1.isEmpty() && !d1.isEmpty() && !g2.isEmpty() && !d2.isEmpty()
        && !g3.isEmpty() && !d3.isEmpty() && !g4.isEmpty() && !d4.isEmpty()
        && !g5.isEmpty() && !d5.isEmpty() && !g6.isEmpty() && !d6.isEmpty()
        && !g7.isEmpty() && !d7.isEmpty())

    Jednak jeżeli chcesz pozostać przy swoim rozwiązaniu to musisz najpierw wiedzieć co oznacza zapis:

    g1.isEmpty() != d1.isEmpty()

    W tym przypadku będzie to prawda wtedy gdy jedno z tych pól będzie puste a drugie uzupełnione ponieważ pomiędzy nimi jest znak "!=" czyli "różne od". Zatem gdy:

    g1.isEmpty() -> fałsz // pole uzupełnione
    d1.isEmpty() -> prawda // pole puste

    fałsz jest różny od prawdy -> prawda. Czyli zapis w kodzie nie spełnia Twojego warunku. Musisz zmienić wszystkie "!=" na "==" . Wtedy warunki zostaną spełnione: fałsz jest równy fałsz (czyli lekcja) oraz prawda jest równa prawda (czyli okienko)

    Kolejną ważną rzeczą jest operator logiczny: alternatywa "||" . W Twoim przypadku nie możesz go użyć. Ponieważ ani razu nie może wyjść fałsz:

    g1.isEmpty() == d1.isEmpty() || g2.isEmpty() == d2.isEmpty() // fałsz || prawda -> zawsze da prawdę

    W parze g1 d1 jedna wartość jest uzupełniona, a druga pusta - warunek który nie może się wydarzyć! W parze g2 d2 obie są uzupełnione. Alternatywa w tym przypadku da prawdę i błędne dane pójdą do bazy :(

    Musisz użyć koniunkcji "&&" Czyli Twój warunek będzie wyglądał podobnie do tego poniżej:
     

    g1.isEmpty() == d1.isEmpty() && g2.isEmpty() == d2.isEmpty()

     

    • Piwko! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Majks

    Cześć, chcę pokazać fragment w MainActivity. Udaje mi się to za pomocą tego kodu w metodzie onCreate:

    val timerFragment = MyFragment()
    
    val manager = supportFragmentManager
    val transaction = manager.beginTransaction()
    transaction.replace(R.id.fragment_container, timerFragment)
    transaction.addToBackStack(null)
    
    transaction.commit()

    Więc w czym problem? Chcę ten kod wywołać w funkcji;

    private fun showFragment(timerFragment: MyFragment) {
    
                val manager = supportFragmentManager
                val transaction = manager.beginTransaction()
                transaction.replace(R.id.fragment_container, timerFragment)
                transaction.addToBackStack(null)
    
                transaction.commit()
    }

    I tutaj supportFragmentManager podświetla się na czerwono i pisze "unresolved reference". Nie wiem jak to ogarnąć. Wrzucam jeszcze kod z MyFragment

    class TimerFragment: Fragment() {
          override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
          }
    
          override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
                val view = inflater!!.inflate(R.layout.fragment, container,false)
                val tv = view.findViewById<TextView>(R.id.text_time)
    
                tv.setOnClickListener{
                      tv.setTextColor(Color.RED)
                      Toast.makeText(view.context,"TextView clicked.",Toast.LENGTH_SHORT).show()
                }
                return view
          }
    }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jak wrzucisz z supportFragmentManager powrotem do onCreate to działa? Może samo Android Studio ma problem? Możesz spróbować usunąć cache z AS.
    Z menu File wybierz Invalidate Caches/Restart następnie: Invalidate and Restart.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Majks

    Cześć mam w activity_main layout:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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:orientation="vertical"
        android:background="@color/appBackground"
        android:gravity="center"
        tools:context=".MainActivity">
    
        <EditText
            android:id="@+id/edit"
            android:style="@style/editStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    Mój style wyglada tak:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
    
        <style name="editStyle">
            <item name="android:layout_marginTop">40dp</item>
            <item name="android:layout_marginBottom">20dp</item>
            <item name="android:layout_marginRight">40dp</item>
            <item name="android:layout_marginLeft">40dp</item>
            <item name="android:textSize">20sp</item>
            <item name="android:padding">10dp</item>
            <item name="android:hint">@string/edit_hint</item>
            <item name="android:textColor">@color/textColor</item>
            <item name="android:background">@color/editColor</item>
            <item name="android:textColorHint">@color/textColor</item>
        </style>

    Niestety coś nie działa i otrzymuje taki error podczas próby odpalenia apki

    Android resource linking failed
    C:\****\app\src\main\res\layout\activity_main.xml:11: error: attribute android:style not found.
    error: failed linking file resources.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x