Beiträge von killphil75

    https://developer.android.com/design/index.html




    Bottom Bar ist evil, das ist "böses" Applezeugs :) .
    Nein ganz im Ernst - schau Dir oben mal den Link an, das sind die Google Design Richtlinien, da findest du einige Anregungen, gerade zum Thema Navigation.



    Weitere grafische Anregungen für UI´s gibt es unter http://androidniceties.tumblr.com/.




    PS: und bitte vergiss den SplashBildschirm. (Screen 1 auf deiner 2ten Skizze), wenn der keine Funktion hat, ausser das Bild anzuzeigen, dann weg damit.
    Eine App sollte immer Responsive sein. Wenn während des Splashbildschirms Daten geladen / initalisiert werden, dann ist das etwas anderes.

    Beschreib mal bitte genauer, was du mit Titelleiste meinst und von welcher Platformversion wir reden.


    Wenn es die Actionbar ist, kannst du Buttons hinzufügen -> ganz klassisch onCreateOptionsMenu


    Hier gibt es auch die Möglichkeit ein CustomLayout zu inflaten, aber wie Marco bereits schrieb, das ist eigentlich so nicht gewollt.
    Das inflaten kann nur im Code und nicht per XML erfolgen. (genauere Infos findest du auf Stackoverflow)


    Wenn du die normale Titlebar meinst (Android 2.2 - 2.3.3) so ist dies auch möglich


    siehe hier -> http://stackoverflow.com/quest…ot-showing-in-4-x-devices


    Aber auch das ist mehr oder weniger nicht den UI Guidelines entsprechend.


    Wenn du wirklich so etwas bauen möchtest, kannst du ja ein Fullscreentheme nutzen (.NOTITLEBAR) und dir selber eine baue, (Layout / Textviews / Buttons) und dann per RelativeLayout immer am oberen Rand festpinnen - damit würdest du sicherstelllen, das es auf allen Geräten gleich ausschaut .

    Wie gesagt wenn die unterschiedlichen Fragmente in einem Viewpager sind, kannst du nicht davon ausgehen - das Sie auch wirklich da sind.
    Wenn Android Speicher braucht dann haut er die einfach aus dem Memory.


    Vorschlag:


    Fragmente haben einen eigenen Lifecycle (aehnlich wie Activities)


    http://developer.android.com/guide/components/fragments.html


    Nutze doch die onPause Funktion um die Werte des jeweiligen Fragments, schon mal beim Verlassen zwischen zu speichern.
    Beim betätigen der Actionbar (Fertig) -> musst du nur noch prüfen welches Fragment gerade aktiv ist und auch dort den aktuellen Wert sichern.


    -> dann alles zusammenrechen bzw. was auch immer passieren soll.


    ----


    Wenn ich das jetzt falsch verstanden habe und die Fragmente doch auf einer Bildschirmseite gemeinsam sind.
    Dann kannst du Dir den Fragmentmanager holen und per id/Tag nach Fragmenten suchen (von der Activity aus gesehen)


    findFragmentbyId


    oder


    findeFragmentbyTag


    je nachdem wie du die Fragmente eingebunden hast. (XML / Code)


    Java
    ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);


    Auch hier den Cast zu deinem Fragment beachten.

    Schreib doch noch mal genau was du vorhast, ich glaube dein Problem ist. Du willst von einem Fragment auf ein anderes zugreifen und das kann so nicht funktionieren. Bei Fragmenten in einem Viewpager, kannst du nicht einfach auf das 4te Fragment im Adapter zugreifen, weil du gar nicht weisst ob es existent ist.


    Deswegen wahrscheinlich auch die Cast Probleme.


    -> Wenn du Daten austauschen willst, musst du sogenannte Interfaces nutzen, die definierst du in der Activity und im Fragment.
    -> sprich die Kommunikation läuft immer über die Activity -> weil dort alle anderen Fragmente verankert sind.

    Code
    Also das funktioniert schonmal


    Mir fällt geradeauf, es kann sein das du den Imageview zuerst setzen musst und die Textviews hinterher wegen der Reihenfolge des Zeichnens.


    Wegen der zweiten Frage, ja so etwas kannst du ganz einfach mit setVisibility hinbekommen (VISIBLE / GONE), wichtig ist dort nur das hier das umgebende Layout WRAP_CONTENT gesetzt hat, damit es automatisch wachsen und schrumpfen kann.


    Ich hatte zum Beipspiel bei einem Relativlayout Probleme und habe es noch mal in ein Linearlayout kapseln müssen, da hilft nur ausprobieren.

    <relativelyout>


    <textview></textview>
    <textview></textview>
    <imageview></imageview>


    </relativelayout>



    So sollte das ohne Probleme möglich sein.

    Einfachen einen Konstruktor bauen und da den Kontext übergeben



    Java
    public class MyCustomTask extends AsyncTask<Void, Void, Long> {
    private Context mContext;
        public MyCustomTask (Context context){
             mContext = context;
        }
        //other methods like onPreExecute etc.
        protected void onPostExecute(Long result) {
              Toast.makeText(mContext,"Subiendo la foto. ¡Tras ser moderada empezara a ser votada!: ", Toast.LENGTH_LONG).show(); 
        }
    }


    Java
    MyCustomTask task = new MyCustomTask(context);
    task.execute(..);




    Lösung zum nachlesen siehe hier


    http://stackoverflow.com/quest…ting-context-in-asynctask

    Zitat

    OK, danke sehr ... Eine Frage noch: PDF über Internet-Acrobat ist langsam im offenen einer Datei?


    Da würde ich sagen, das kommt auf das PDF an.
    Grob gesagt kann man sagen je mehr Grafiken und je höher die Auflösung des PDF´s, desto langsamer das Öffnen.
    PDF muss ja auch immer gerendert werden und je nach Prozessorpower deines Mobilen-Endgerätes dauert das halt auch noch mal etwas länger.

    In Java wird die Arraygröße beim initalisieren gesetzt und kann nicht verändert werden.


    Um flexibler zu sein, bzw. eine unbestimmte ANzahl von Objekten aufzunehmen nutze lieber List / Arraylist


    da gibt es dann zum Beispiel Methoden wie Arraylist.clear(); oder Arraylist.add(objekt)


    stattd´dem Break ... return true;


    und schreibn mal dir sachen ins Log - da siehst du ob die Programmteileabgearbeitet werden


    Marco mag mich jetzt hauen, aber die Ableitung zu einer Activity geht nicht wirklich so...


    onCreate bzw super Methoden werde gar nicht aufgerufen, also gibt es auch keinen Context.


    Pirate die Nullpointerexceptions tauchen ja schon vor onCreateOptionMenu auf und da stehen nur deine Variablen, also kann das so schon mal nicht klappen.
    Mein Vorschalg wäre die Klasse sensoren "sauber" zu machen (weg mit dem Activity quatsch) siehe oben .


    Und dann initalisierst du die am besten erst im onCreate deiner Activity, da kannst du dann auch gleich testen ob es fehlgeschlagen ist (für Geräte ohne Sensoren und die App sauber beeenden)

    Du brauchst einen Context, am besten beim Erschaffen deiner Klasse übergeben und speichern


    -> bekommst du von der aufrufenden Activity/ bzw auch per getApplicationcontext



    und dann


    Zitat

    sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

    Ich dachte immer


    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />


    definieren lediglich deine StartActivity, und dann hattest du noch ein Gross/Kleinschreibungsproblem


    http://developer.android.com/r…droid/content/Intent.html


    Das Action-Dingens brauchst du halt nur wenn du Intents feuerst, welche dann direkt bei der Activity rauskommen sollen.
    Sprich das ist nicht bei jeder Activity notwendig.

    Zitat

    Ich habe schon gegoogelt, dabei habe ich herausgefunden, dass ein ContentProvider des Problemes Lösung wäre, allerdings kommt es mir ein wenig übertrieben dafür vor, schließlich geht um nur um dieses Problem, ich will keine Daten für andere Apps bereitsstellen oder ähnliches.


    SQLite kann halt leider nur schreiben oder nur lesen. ContentProvider ist hier schon die richtige Lösung, dafür haben die den erfunden.
    Erleichtert Dir auch den Umgang mit Loadern in deiner APP.



    Ein Dirty Lösung wäre, in deinem DB Helper eine Static Variable einzubauen.


    static Boolean isUpdateing = false;


    Und diese fragst du beim Lesen ab und "wartest" dann ein paar Millisekunden.