CDM / Netcdf Library Dependencies
hast du Dir mal angeschaut was die Lib so an Abhängigkeiten hat ?
Android basiert zwar auf Java, aber es beinhaltet nicht alles was auch im JDK enthalten ist, eventl. liegt da der Hund begraben.
CDM / Netcdf Library Dependencies
hast du Dir mal angeschaut was die Lib so an Abhängigkeiten hat ?
Android basiert zwar auf Java, aber es beinhaltet nicht alles was auch im JDK enthalten ist, eventl. liegt da der Hund begraben.
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.
Ausgaben Logcat, bzw wenn du kein Telefon hast.
Kannst du die APK irgendwo hochstellen, dann könnte man das mal prüfen.
Echtgeld, ich hoffe damit meinst du Käufe innerhalb der App um Gegenstände zu kaufen??
Dann -> http://developer.android.com/g…ing/billing_overview.html
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)
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.
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
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();
}
}
Lösung zum nachlesen siehe hier
ZitatOK, 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.
Nur so als hinweid: Nativ pdf in der app öffnen ist ein riesen problem. Alle Bibliotheken die das halbwegs können, kosten jede menge geld. Oeffnen per Intent im acrobat reader ist schnell gemacht.
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)
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.addCar:
break;
case R.id.impressum:
Intent intent = new Intent("com.example.carmanager.IMPRESSUM");
startActivity(intent);
System.out.println("hello here is menu class");
break;
}
return false;
Alles anzeigen
stattd´dem Break ... return true;
und schreibn mal dir sachen ins Log - da siehst du ob die Programmteileabgearbeitet werden
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.addCar:
Log.d("FUEL", " Add Car wurde gedrückt");
return true;
case R.id.impressum:
Log.d("FUEL", " Impressum wurde gedrückt");
Intent intent = new Intent("com.example.carmanager.IMPRESSUM");
startActivity(intent);
System.out.println("hello here is menu class");
return true;
}
default:
return super.onOptionsItemSelected(item);
Alles anzeigen
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)
Hmm Marco - stimmt die Activity hab ich mal glatt überlesen .... ob dann sein Constructor aber so hinhaut ist auch fraglich ... deswegen bin ich wahrscheinlich von einer ext . Klassenlösung ausgegangen
Du brauchst einen Context, am besten beim Erschaffen deiner Klasse übergeben und speichern
-> bekommst du von der aufrufenden Activity/ bzw auch per getApplicationcontext
public class Sensoren implements SensorEventListener {
SensorManager sensorManager;
private String type;
private float vektor[]=new float[3];
private final Context context;
public Sensoren(Context context, String t){
type = t;
this.context = context;
}
ect pp
Alles anzeigen
und dann
ZitatsensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
Was ist ein indirekter link? Ich verstehe nicht ganz was du runterladen willst.
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.
ZitatIch 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.