1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Bilder an mehrere Fenster der App setzen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von zblack, 31.10.2011.

  1. zblack, 31.10.2011 #1
    zblack

    zblack Threadstarter Gast

    hallo alle android freunde.
    ich habe eine frage.
    ich habe im Ordner drawable mehrere Bilder. Diese Bilder habe ich auf ImageButtons gepackt. Jetzt habe ich mehrere xml seiten mit ImageViews auf den die Bilder sein sollen. Die xml Seiten sind alle unterschiedlich aufgebaut und für unterschiedliche Zwecke gedacht.
    Wie kann ich es so machen, dass beim klicken eines bestimmten ImageButtons, das Bild welches auf diesem Imagebutton ist, in allen Fenstern der App erscheint ?

    Z.b die App hat insgesamt 6 Seiten. Wenn man beim Starten der App auf Button mit Mickey Mouse klickt, dann erscheint das BIld von Mickey Mouse in auf jedem Fenster der App.

    MfG.
     
  2. swordi, 31.10.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    musst dir halt das geklickte bild bzw dessen id speichern und bei jeder activity dann setzen

    stichwort: sharedpreferences oder intent extras
     
  3. zblack, 01.11.2011 #3
    zblack

    zblack Threadstarter Gast

    Danke für die Antwort. Ich bin leider ein totaler Anfänger in Sachen Android.
    Meinst du das mit intent extras soetwas wie : Intent x = new Intent (....); x.putExtras (...) ?
    Kannst du vlt ein kleines Beispiel machen wie du das mit ids der Bilder abspeichern meinst ? Vielen dank.
     
  4. zblack, 01.11.2011 #4
    zblack

    zblack Threadstarter Gast

    Habe mir da so ein Code gebastelt.
    Die erste seite mit den Buttons wird angezeigt , doch beim Klicken auf Button explodiert die App.

    Code:
    public class TestActivity extends Activity implements OnClickListener{
        /** Called when the activity is first created. */
        ImageButton button_ai;
        ImageButton button_test;
        ImageView imageView;
        ImageView imageView2;
    
        Bitmap bitmap_ai;
        Bitmap bitmap_test;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           button_ai = (ImageButton) findViewById(R.id.imageButton1);
           button_test = (ImageButton) findViewById(R.id.imageButton2);
           imageView = (ImageView) findViewById(R.id.iv1);
           imageView2 = (ImageView) findViewById(R.id.iv2);
           bitmap_ai = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
           bitmap_test = BitmapFactory.decodeResource(getResources(), R.drawable.test);
           button_ai.setOnClickListener(this);
           button_test.setOnClickListener(this);
        }
        
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId())
            {
            case R.id.imageButton1:
                imageView.setImageBitmap (bitmap_ai);
                imageView2.setImageBitmap (bitmap_ai);
                Intent i = new Intent (this, t2.class);
                startActivity(i);
                break;
                
            case R.id.imageButton2:
                imageView.setImageBitmap (bitmap_test);
                imageView2.setImageBitmap (bitmap_test);
                Intent i2 = new Intent (this, t3.class);
                startActivity(i2);
                break;
            }
        }
    }
    
     
  5. swordi, 01.11.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    sorry, aber wenn du eine antwort willst, solltest du "explodiert" so ausdrücken, dass ein entwickler damit was anfangen kann.

    => logcat.
     
  6. zblack, 01.11.2011 #6
    zblack

    zblack Threadstarter Gast

    entschuldigung für meine ausdrucksweise.
    beim klicken auf das Button kommt die Meldung : "The Aplication Test (process t.est) has stopped unexpectedly. Please try again.

    Logcat sagt dann folgendes :
    11-01 22:23:37.115: D/AndroidRuntime(238): Shutting down VM
    11-01 22:23:37.115: W/dalvikvm(238): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    11-01 22:23:37.115: E/AndroidRuntime(238): Uncaught handler: thread main exiting due to uncaught exception
    11-01 22:23:37.135: E/AndroidRuntime(238): java.lang.NullPointerException
    11-01 22:23:37.135: E/AndroidRuntime(238): at t.est.TestActivity.onClick(TestActivity.java:49)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.View.performClick(View.java:2364)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.View.onTouchEvent(View.java:4179)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.View.dispatchTouchEvent(View.java:3709)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-01 22:23:37.135: E/AndroidRuntime(238): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
    11-01 22:23:37.135: E/AndroidRuntime(238): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
    11-01 22:23:37.135: E/AndroidRuntime(238): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.os.Handler.dispatchMessage(Handler.java:99)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.os.Looper.loop(Looper.java:123)
    11-01 22:23:37.135: E/AndroidRuntime(238): at android.app.ActivityThread.main(ActivityThread.java:4363)
    11-01 22:23:37.135: E/AndroidRuntime(238): at java.lang.reflect.Method.invokeNative(Native Method)
    11-01 22:23:37.135: E/AndroidRuntime(238): at java.lang.reflect.Method.invoke(Method.java:521)
    11-01 22:23:37.135: E/AndroidRuntime(238): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    11-01 22:23:37.135: E/AndroidRuntime(238): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    11-01 22:23:37.135: E/AndroidRuntime(238): at dalvik.system.NativeStart.main(Native Method)
    11-01 22:23:37.175: I/dalvikvm(238): threadid=7: reacting to signal 3
    11-01 22:23:37.216: I/dalvikvm(238): Wrote stack trace to '/data/anr/traces.txt'
     
  7. Tom299, 02.11.2011 #7
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    null pointer in zeile 49 ... ich nehme mal an, daß eine image view null ist. sind beide image views in deiner main.xml oder in verschiedenen layouts? weil dann muß du für die 2. image view erst mal inflaten ...
     
  8. zblack, 02.11.2011 #8
    zblack

    zblack Threadstarter Gast

    ja ,die imageViews sind in verschiedenen xmls.
    wie soll ich die inflaten ?
     
  9. Tom299, 02.11.2011 #9
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    z.B. so:
    Code:
            LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            LinearLayout layoutUpdate = (LinearLayout)inflater.inflate(R.layout.service_update, null);
            TextView tvUpdate = (TextView)layoutUpdate.findViewById(R.id.service_update_tvInfo);
            if (tvUpdate != null) {
                System.out.println("juhuuuu");
            }
    
     

Diese Seite empfehlen