1. AquaBall, 02.05.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Ich habe eine Classe, die dynamisch ein ImageView erstellen soll.

    Der Code funktioniert in onCreate() einwandfrei,
    Code:
            LayoutParams lp = new LayoutParams(
                  LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            image= new ImageView(getApplicationContext());
            image.setImageResource(R.drawable.mypic);
            mainScreen.addView(image,  lp );
    
    In der classe, wo ich das aber brauchen würde, gibts aber keine getApplicationContext().
    Was mus ich hier stattdessen machen?

    (Außerdem würde ich einen Weg suchen, dass ich mein LinearLayout "mainScreen" nicht aus der Activity übergeben muss, sondern in der classe direkt erkennen kann. Für das ".addView")
     
  2. swordi, 02.05.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    musst deiner klasse eben den context geben. Wo ist das Problem?

    Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
     
  3. AquaBall, 02.05.2012 #3
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Hast ja eh recht. Ich wollte mir nur "schon wieder einen weiteren" Parameter ersparen.

    *schäm* Eigentlich irgendwie schizophren: erst alles private machen, und dann zu faul sein, Parameter zu übergeben. :o

    Aber vielleicht kannst du mir bei der 2. Frage helfen:
    Wie kann ich ein addView() machen, wenn ich nicht genau weiß, welches Layout dahinter liegt?

    Momentan behelfe ich mir mit einer ID:
    Code:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/main"
    und 
    mainScreen=(LinearLayout) findViewById(R.id.main);
    mainScreen.addView(..)
    
    geht das besser?
    Was mach ich wenn's mal kein LinearLayout ist?
     
  4. Tom299, 03.05.2012 #4
    Tom299

    Tom299 Android-Experte

    Du kannst auch direkt die View added und mußt nicht auf LinearLayout casten. Wenn du nichts damit machst außer addView dann brauchste den Cast nicht.

    Wenn du rausfinden willst, welches Layout es ist, dann kannst du bestimmt instanceof verwenden. Hab ich zwar noch nicht versucht, aber sollte klappen.

    Du könntest auch hingehen und das oberste Element immer als LinearLayout definieren, dann hättest du immer dein LinearLayout.
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android getApplicationContext

    ,
  2. android getApplicationContext in class