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

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

Avatar
balaz.marek94:

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. července 12:06
Avatar
Atrament
Člen
Avatar
Atrament:

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. července 12:30
 
Nahoru Odpovědět 6. července 12:28
Avatar
Odpovídá na Atrament
balaz.marek94:

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. července 13:02
Avatar
Atrament
Člen
Avatar
Odpovídá na balaz.marek94
Atrament:

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

 
Nahoru Odpovědět 6. července 13:06
Avatar
Odpovídá na Atrament
balaz.marek94:

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. července 13:30
Avatar
Atrament
Člen
Avatar
Atrament:

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. července 13:36
Avatar
Odpovídá na Atrament
balaz.marek94:

Á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. července 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.