StartActivityForResult() aufrufen

R

Razer6

Neues Mitglied
0
Hallo an alle,

Für eine PreferenceActivity habe ich ein eigenes Controll abgeleitet von Preference geschrieben:

public class CustomPreferenceControl extends Preference
{
}

Das Element enthält inen OnItemClickListener(). Bei Click auf das Element soll ein neues Activity gestartet werden mittels startActivityForResult(). Die Rückgabewerte sollen wiederrum in aufgefangen werden.

Wie löse ich das am Besten, da CustomPreferenceControl ja nicht von Activity abgeleitet ist.

Ich hoffe ihr könnent mir helfen.

Danke im Voraus
Robert
 
Hallo Felix,

So einfach geht das leider nicht.

Übergebe ich das Parentactivity im Konstruktor, kann ich zwar startActivityForResult() aufrufen aber wie implementiere ich da onActivityResult() die ja eine deleigierte Methode der Klasse Activity ist.


Das größere Problem ist jedoch, ich instanziere das CustomPreferenceControl ja nicht manuell, das geschieht über die preference.xml - Somit kann ich die Parent-Activity auch nicht übergeben.

Danke für Hilfe!
Robert
 
@FelixL

Hallo Felix,

so ganz passt das snipplet aber auch nicht, oder?
Im ersten Aufruf ist diffTime ja System.currenTimeMillis() - (-1) da ja
lastUpdate mit -1 initialisiert wird. Damit ist diffTime + 1 irgendein krass
hoher Wert, da ja System.currentTimeMillis () die Zeit in Millisekunden seit
1.1.1970 ausgibt....

Außerdem wunder es mich, dass er Millisekunden durch 10 000 dividiert
und nicht durch 1000....und unsere schöne Vektoraddition mit der Wurzel
der Quadratsummen fehlt auch!

Oder sehe ich das falsch?

Wie könnte man das denn jetzt in ner anderen .java Klasse aufrufen?

Gruß,
Frank
 
Du bist im falschen Thread ;)

Aber um deine Fragen zu beantworten (mal aus dem Kopf auf die Schnelle, ohne noch mal reinzuschauen):
Ja, diffTime ist ein extrem hoher Wert beim ersten mal. Das ist aber richtig so, weil sicher gestellt sein muss, dass diffTime nicht 0 oder sehr niedrig wird, weil sonst das shake-event ausgelöst würde...oder durch 0 geteilt würde, was auch nicht so gut wäre.

Das Dividieren durch 10.000 geht auch in Ordnung, oben wird FORCE_TRESHOLD auch nicht mit 900 initialisiert. Auf jeden Fall funktioniert es so. Ich hab es sogar für meine Zwecke auf 1500 geändert, weil es mir vorher zu oft angeschlagen hat.

Und dass die Vektoraddition fehlt liegt ganz einfach daran, dass du im falschen Thread bist :p

Aufrufen tust du das über
import com.gedankentank.android.sensor.AccelerometerListener
(wobei das Package auf dein eigenes geändert werden sollte, weiß nicht ob das nötig ist, ich hab es mal gemacht)
AccelerometerListener mAL = new AccelerometerListener(this);
(ich habe im AccelerometerListener die Activity Parent zum Context ctx geändert, weil ich einen Service benutze, der dieses Objekt benutzt)
dann noch mAL.start() zum starten und mAL.stop zum stoppen, ausserdem im AL selbst noch irgendwas einbauen, was die Überaktivity alamiert. Ich hab das etwas unsauber über einen Intent gemacht, geht wahrscheinlich sauberer. Hatte es auch nur zu Testzwecken drin, hab dann gemerkt das mein Hero alle Sensoren beim Bildschirm-ausschalten mit ausschaltet. Damit wurde das für meine Zwecke komplett sinnlos.

Aber zurück zum Thema:


Razer6 schrieb:
Das Element enthält inen OnItemClickListener(). Bei Click auf das Element soll ein neues Activity gestartet werden mittels startActivityForResult(). Die Rückgabewerte sollen wiederrum in aufgefangen werden.
In was sollen sie denn nun wieder aufgefangen werden? ;)
Ich denke, wenn du es schaffst, die Activity zu übergeben, wird automatisch das onActivityResult() der Activity die du übergeben hast aufgerufen. Ist das nicht in deinem Sinn?
Selbst wenn nicht, kannst du nicht weitere Methoden in deine Preference einbauen, um im Nachinein noch von der Activity aus darauf einzuwirken?
Damit könntest du z.B. im onCreate der Activity schon die Activitity parent in der Preference setzen, oder im onActivityResult die Werte an die Preference übergeben.

Hab sowas noch nie gemacht, das ist nur der Weg wie ich ihn mir vorstelle ;)
 
Hallo Felix,

Zu meinem Problem, Ich habe ein eigenes Preference, das bei einem Klick darauf ein Activity (einen File Browser) öffnen soll.

Um schön generisch zu bleiben und um die Wiederverwendbarkeit zu erhöhen, will ich, dass eben die Activity von der Preference Klasse aus aufgerufen will.

Das Problem ist aber, das ich die Preferece-Activity ja nicht manuell erstelle - die wird aus einer XML-Datei heraus gestellt:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">

<ListPreference>
....
></ListPreference>

<razer.preferencetest.PathPreference>
....
</razer.preferencetest.PathPreference

</PreferenceScreen>

Ich erstelle kein Objekt der meiner Preferenceklasse mit der "Hand". Somit kann ich ihr auch selber im Code nichts übergeben.

Ich hoffe das beschreibt da Problem

Robert
 
Sorry, da kann ich dir nicht weiterhelfen. Vielleicht findet sich ja jemand anderes hier im Forum :/
 

Ähnliche Themen

Helmut1A
  • Helmut1A
Antworten
7
Aufrufe
1.128
Helmut1A
Helmut1A
M
  • maksimilian
Antworten
15
Aufrufe
1.701
maksimilian
M
W
  • waltsoft
Antworten
4
Aufrufe
945
waltsoft
W
Zurück
Oben Unten