Android Studio Activitys durch Wischen wechseln

  • Antworten:22
Fabian ASP
  • Forum-Beiträge: 46

05.02.2015, 12:15:12 via Website

Hallo,
gibt es eine Möglichkeit Activitys durch das Wischen nach rechts oder links zu wechseln?
Vielen Dank für Eure Hilfe :-)
Mit freundlichen Grüßen.

Antworten
Sven R.
  • Forum-Beiträge: 1.904

05.02.2015, 16:47:21 via App

Ja sicher. Eleganter und schneller aber ein ViewPager, der dich zwischen Fragmenten wechseln lässt.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Fabian ASP
  • Forum-Beiträge: 46

07.02.2015, 19:27:57 via Website

Vielen Dank für deine Antwort. Leider finde ich nichts zu diesem ViewPager, könnte vielleicht jemand ein Beispiel machen? Und geht das dann auch mit "Intent" wenn ihr wisst was ich meine? :D

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.02.2015, 19:54:23 via Website

Zum ViewPager findet man doch ziemlich viel, das zum Beispiel: http://architects.dzone.com/articles/android-tutorial-using

Was meinst du mit Intent?
Ja du kannst trotzdem Intents ausfühen nur nicht innerhalb des Viwpager. Sobald du ein Intent startest wird Die View pager Activity beendet und deine andere Activity kommt zum vorschein.
Da musst du dann schon alles umstellen (oder auch nicht, geht auch ohne ist aber dann sehr komplex).

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sven R.
  • Forum-Beiträge: 1.904

08.02.2015, 00:04:56 via App

Ich glaube du willst Intents benutzen um Daten zu übertragen. Versuch aber erstmal einen ViewPager hinzubeokmmen und dann wirst du schon von alleine sehen, wie das mit den Daten geht.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Gelöschter Account
  • Forum-Beiträge: 76

08.02.2015, 07:52:02 via App

Bei dem ViewPager kann man glaube ich auch mit einem Befehl die Position festlegen.
Ist es das was du meinst?

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 13:56:53 via Website

Danke für eure Hilfe :-)
Die sache ist die, ich hatte eine vorher existierende Activity die halt nicht wie bei dem ViewPager "extends Fragment" sondern eine "extends ActionBarActivity" war. Wenn ich nun den Code, explizit die onCreate-Methode in die vom ViewPager bzw. Fragment erzeugten Methode "@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){}" versuche hinein zu fügen geht das natürlich nicht. Hat wer ein Lösungsvorschlag?
Vielen Dank :-)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.02.2015, 14:09:13 via Website

Warum sollte das nich gehenß
In einem Fragment kannst du auch alles machen. Du brauchst halt nur deine Acitivty, welche du mit getCtivity() bekommst.
Dazu musst du den Code aber verändern.

Ich würde dir aber empfehlen ActionBar etc. aus der Activity zu steuern und die Fragments unabhängig der Activity machen.

Bei speziellen Problemen poste mal bitte deinen Code.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 14:30:43 via Website

public class home extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_home, container, false);

        Parse.initialize(this, "application_id", "password");  //den 2. und 3. Parameter kann ich euch nicht zeigen sonst hättet ihr wichtige Daten :D


        ParseUser currentUser = ParseUser.getCurrentUser();
        if(currentUser != null){
         //bleib auf der home-activity
        }else{
            Intent intentonLogin = new Intent(this, login.class);
            startActivity(intentonLogin);
        }


}

}

So und alles ab "Parse.initalize...." bis "startActivity..." war halt vorher in der onCreate Methode aber da ich ja jetzt diese Activity als Fragment habe funktioniert das halt nicht mehr :(

Fehler sind: (fett und kursiv)
Parse.initialize(this, "applikation_id", "password_id");

Intent intentonLogin = new Intent(this, login.class);

— geändert am 08.02.2015, 14:45:21

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.02.2015, 14:36:15 via Website

Soll das login extra als eigene Activty bleiben?
Wenn ja dann ist das ganz einfach:
Dein this Schlüsselwort bezog sich in der Activity auf den Context oder Activity.
Somit machst du jetzt:
Context c = getApplicationContext();

oder

Activity act = getActivity();

überall da wo this steht musst du dan entweder act oder ctx einsetzen.

PS: Sind das unten in deinem Post die echten ID und PW?
Wen ja dann wieder rausnehmen

— geändert am 08.02.2015, 14:37:51

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sven R.
  • Forum-Beiträge: 1.904

08.02.2015, 14:43:20 via App

Die erste Anweisung ist gleich return. Der Rest der Methode wird dann nicht ausgeführt.
Ich mache gerne in die oncreateview nur das view mit return und in onviewcreated den rest. Würde sich bei dir auch anbieten.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 14:50:57 via Website

Pascal P.

Soll das login extra als eigene Activty bleiben?
Wenn ja dann ist das ganz einfach:
Dein this Schlüsselwort bezog sich in der Activity auf den Context oder Activity.
Somit machst du jetzt:
Context c = getApplicationContext();

oder

Activity act = getActivity();

überall da wo this steht musst du dan entweder act oder ctx einsetzen.

PS: Sind das unten in deinem Post die echten ID und PW?
Wen ja dann wieder rausnehmen

Ok das ist jetzt ganz komisch, also erstmal danke wegen der id und pw upps :D
Und Wenn ich Activity act = getActivity(); und
Context c = getApplicationContext();
streicht er nur getApplicationContext an und sagt cannot resolve
wenn ich dann getApplication weg mache streicht er Activity act = get.. an und sagt Unreachable statement :O

Antworten
Sven R.
  • Forum-Beiträge: 1.904

08.02.2015, 14:52:42 via App

Lies meinen Post. Unreachable weil am anfang direkt return.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 14:55:56 via Website

Sven R.

Lies meinen Post. Unreachable weil am anfang direkt return.

Übersehen, trotzdem streicht er jetzt "return" an und sagt "missing return value", du meintest ja das return in
ParseUser currentUser = ParseUser.getCurrentUser();
if(currentUser != null){
return;
}else{
Intent intentonLogin = new Intent(act, login.class);
startActivity(intentonLogin);
}
oder?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.02.2015, 14:58:34 via Website

Mitdenken mussst du schon:

View v = inflater.inflate(R.layout.activity_home, container, false); // Das am anfang

und am ende:

return view;

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 15:12:47 via Website

Oh, voll nicht dran gedacht, sorry bin wohl überarbeitet.
Trotzdem folgt ein Runtime Error:
08 08:21:20.120 2417-2417/de.myapp.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.myapp.myapp/de.myapp.myapp.home}: java.lang.ClassCastException: de.myapp.myapp.home cannot be cast to android.app.Activity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: de.myapp.myapp.home cannot be cast to android.app.Activity
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Antworten
Sven R.
  • Forum-Beiträge: 1.904

08.02.2015, 15:29:13 via App

Zeig mal deinen jetzigen Code. Irgendwo scheints du was zu casten. Ich kann mir den Fehler gerade nicht vorstellen.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 19:03:10 via Website

package de.myapp.myapp;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
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 com.parse.Parse;
import com.parse.ParseUser;

public class home extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_home, container, false);

    Activity act = getActivity();



    Parse.initialize(act, "applikation_id", "password");



    ParseUser currentUser = ParseUser.getCurrentUser();
    if(currentUser != null){
        return view;
    }else{
        Intent intentonLogin = new Intent(act, login.class);
        startActivity(intentonLogin);
    }



    return view;

        }

}

— geändert am 08.02.2015, 19:03:33

Antworten
Sven R.
  • Forum-Beiträge: 1.904

08.02.2015, 19:05:53 via App

Ach. Extended die login.java von Activity? Anscheinend nicht. Das wäre das Problem.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 19:20:06 via Website

Das verstehe ich nicht :D
Das ist jetzt die home activity bzw das fragment :D

Ich hab mal in der manifest.xml nachgeguckt und da sind die 3 Fragmente also home,status und konto alle 3 als Activity aufgelistet aber das sind sie ja nicht. hier mal kurz ein Beispiel:
< activity
android:name=".status"
android:label="@string/title_activity_status" >
< /activity>

Was muss denn da jetzt stehen anstatt activity? :-)

— geändert am 08.02.2015, 19:37:35

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.02.2015, 19:55:25 via Website

Garnix (zuerstmal)

Eine Activity ist das, was ausgeführt wird (und eine UI erstellt etc).
Fragments sind zum Veranschalichen und darstellen gedacht.

Deine login.class muss also so aussehen:

public class login extends Activity
{
//do your login Stuff

}

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Fabian ASP
  • Forum-Beiträge: 46

08.02.2015, 20:00:30 via Website

so sieht sie auch aus :O
also wenn ihr euch darauf bezieht mit dem "public class login extends Activity" :O

Also kann ich gar keine Aktionen auf den Fragmenten ausführen? :-(

— geändert am 08.02.2015, 20:01:04

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.02.2015, 20:14:25 via App

Doch aber Fragmente kannst du nicht per Intent Starten.Ausserdem ist ein Login als extra Activity wahrscheinlich besser da du dann einfacher Login und andere Fragments trennen kannst.
Ich denke du solltest dich da mehr einlesen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten