Activity in einer anderen Klasse

  • Antworten:8
  • Bentwortet
Herbert Baum
  • Forum-Beiträge: 5

01.09.2012, 18:43:10 via Website

Hallo Leute,

ich habe eine Activityclasse, in der viel code drin ist, und um die app logisch besser zu gliedern dachte ich, die Activity schreibe ich in einer anderen classe weiter, jetzt weiß ich nicht was ich übergeben muss und von was ich ableiten muss, damit ich Methoden wie findviewbyid(...) nutzen kann, wenn ich z.B. von Activity ableite, damit ich die benötigten Methoden habe, kommt der Fehler:
09-01 18:39:25.794: E/AndroidRuntime(28968): java.lang.NullPointerException
09-01 18:39:25.794: E/AndroidRuntime(28968): at android.app.Activity.findViewById(Activity.java:1794)
dies liegt daran, da er ja nicht weiß auf welches Layout und welche Activity sich beziehen soll.

Ich würde mich wirklich sehr freuen wenn Ihr mir da weiterhelfen könnt.

Danke

Antworten
Herbert Baum
  • Forum-Beiträge: 5

01.09.2012, 21:48:11 via Website

Es ist eine drapdown activity, und somit würde sie sehr sehr lang werden wenn mann sie nicht unterteillt,
wenn ich mir den context hole, kann ich mir zwar sachen wie sharedprefenses und startactivity holen,
habe aber keinen Zugriff auf Sachen wie findviewbyid und setContentView und somit bringt das nichts

hat sonst noch jemand eine idee?

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

01.09.2012, 23:11:05 via Website

Nochmal: Context der Activity (this aus der Activity) ermöglicht den Zugriff auf deren Daten. Ich greife selbst aus Library Projekten und AsyncTasks so darauf zu.

Du kennst den Unterschied zwischen Application-Context und Activity-Context?

Antworten
Herbert Baum
  • Forum-Beiträge: 5

01.09.2012, 23:33:19 via Website

Wenn ich in den Konstruktor
1private Context context;
2
3 stopwatch(Context ctx) {
4 context = ctx;
5 }
und bei der erzeugung des Objekts als Parameter
1stopwatch watch = new stopwatch(this);
2 watch.startcaller();
eingebe,
kommt vieles, doch nicht sowas wie findviewbyid
könntest du mir vieleicht ein codebeispiel geben

Antworten
Herbert Baum
  • Forum-Beiträge: 5

01.09.2012, 23:45:15 via Website

wahrscheinlich stell ich mich grade blöd an, doch wie mach ich das

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

02.09.2012, 00:01:11 via App

* Konstruktor in MeineKlasse
public MeineKlasse(MeineVielZuLangeActivity activity, ...)

* Aufruf aus MeineVielZuLangeActivity
new MeineKlasse(this, ...);

Der Context ist allgegenwärtig - man benötigt ihn quasi überall. Es besteht aber je nach Anwendungsfall die Gefahr des "leak". Also gucke ich mir immer genau die Umgebung an und verwende aus einer Activity Application-Context oder this (Activity-Context) - in dieser Reihenfolge.

— geändert am 02.09.2012, 08:34:26

Antworten
Herbert Baum
  • Forum-Beiträge: 5

02.09.2012, 00:07:18 via Website

Wow, ohne sie hätte ich das nicht hinbekommen, danke
und mal wieder was gelernt

— geändert am 02.09.2012, 00:07:34

Antworten