Diskuze: Android - problém s prepínaním aktivít

Java Java Android - problém s prepínaním aktivít

Aktivity (1)
Avatar
balaz.marek94:6.7.2016 12:06

Nazdar, skúšal som pomerne dosť tutorialov na internete, ohľadom prepínania aktivít v android aplikácií, avšak vždy keď kliknem na tlačítko prepínajúce aktivitu, tak mi padne aplikácia. Pripájam zdrojáky z jedného pokusu :)

MainActivity.java

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;

public class MainActivity extends Activity {
    final Context context = this;
    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = (Button)findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, SecondActivity.class);
                startActivity(intent);
            }
        });

    }
}

SecondActivity.java

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="marekbalaz.com.cvicenie2.MainActivity"
    android:orientation="vertical"
    android:id="@+id/frameLayout">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go to \nsecond activity"
        android:id="@+id/button"
        android:layout_gravity="center"
        android:textSize="25dp" />
</FrameLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Welcome to\nsedond activity!"
        android:id="@+id/textView"
        android:textSize="40dp" />
</LinearLayout>

Vedel by mi niekto poradiť, čo robím zle alebo čo môže zapríčiňovať pád aplikácie?

 
Odpovědět 6.7.2016 12:06
Avatar
Atrament
Člen
Avatar
Atrament:6.7.2016 12:28

Co to vypíše do logu, když to spadne? Zkus změnit tu tvorbu Intentu

Intent intent = new Intent(context, SecondActivity.class);

na

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);

Nejsem si jistý, jestli to má nějaký vliv, neprogramuju pro Android, takže se v něm zas tak moc nevyznám, ale před časem jsem pár drobností napsal, a tehdy jsem activity takto přepínal a fungovalo to v pohodě.

Editováno 6.7.2016 12:30
 
Nahoru Odpovědět 6.7.2016 12:28
Avatar
Odpovídá na Atrament
balaz.marek94:6.7.2016 13:02

Skúšal som aj tým spôsobom, avšak stále ten istý výsledok. :/

S tým "logom" je problém, lebo ja spúšťam appky len na mobile, pretože keď ich spúšťam cez počítač, tak virtuálne zariadenie sa mi dlho načítava a potom dosť seká (ak sa rozbehne), tak preto spúšťam len cez mobil :)

 
Nahoru Odpovědět 6.7.2016 13:02
Avatar
Atrament
Člen
Avatar
Odpovídá na balaz.marek94
Atrament:6.7.2016 13:06

No ale i tak se ti v IDE zobrazuje log toho co to dělá, když to spustíš, ne?

 
Nahoru Odpovědět 6.7.2016 13:06
Avatar
Odpovídá na Atrament
balaz.marek94:6.7.2016 13:30

Spustil som to, log vypísal:

07-06 11:26:16.025 3713-3713/marekbalaz.com.cvicenie2 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: marekbalaz.com.cvicenie2, PID: 3713
                                                                        android.content.ActivityNotFoundException: Unable to find explicit activity class {marekbalaz.com.cvicenie2/marekbalaz.com.cvicenie2.SecondActivity}; have you declared this activity in your AndroidManifest.xml?
                                                                            at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794)
                                                                            at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
                                                                            at android.app.Activity.startActivityForResult(Activity.java:3917)
                                                                            at android.app.Activity.startActivityForResult(Activity.java:3877)
                                                                            at android.app.Activity.startActivity(Activity.java:4200)
                                                                            at android.app.Activity.startActivity(Activity.java:4168)
                                                                            at marekbalaz.com.cvicenie2.MainActivity$1.onClick(MainActivity.java:24)
                                                                            at android.view.View.performClick(View.java:5198)
                                                                            at android.view.View$PerformClick.run(View.java:21147)
                                                                            at android.os.Handler.handleCallback(Handler.java:739)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:148)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Vyzerá to tak, že nenašiel moju aktivitu. Mám ju pred spustením niekde zapísať aby ju aplikácia evidovala či ako na to? :O

 
Nahoru Odpovědět 6.7.2016 13:30
Avatar
Atrament
Člen
Avatar
Atrament:6.7.2016 13:36

Aha, no jasně :) Do AndroidManifest.xml :) Už tam budeš mít tu první, tak podle ní doplň tu druhou.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 6.7.2016 13:36
Avatar
Odpovídá na Atrament
balaz.marek94:6.7.2016 13:43

Áno už to ide, vďaka. Problém bol v tom, že ja som nevytváral aktivitu cez new -> activity... ale vytvoril som triedu a layout, takže sa mi v manifeste nevytvorila nová aktivita... už to ide, veľká vďaka :)

 
Nahoru Odpovědět 6.7.2016 13:43
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 7 zpráv z 7.