Autore Topic: ImageView  (Letto 665 volte)

Offline dicba

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD
  • Sistema operativo:
    Mac OS X 10.6.8
ImageView
« il: 05 Maggio 2013, 21:09:11 CEST »
0
Mi da errore nell'inserire le immagini su questa activity rispetto a  RelativeLayout layout = new RelativeLayout(this); con il problema di unreacheable code.
Come posso risolvere il problema??


Codice (Java): [Seleziona]
package it.sii.android.helloandroid;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class NuovaActivity extends Activity {
        private ImageView primaImmagine;
        private RelativeLayout layout;
       
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater=getMenuInflater();
            inflater.inflate(R.menu.descrizione, menu);
            return super.onCreateOptionsMenu(menu);

            RelativeLayout layout = new RelativeLayout(this);

         // TODO: Set attributes for layout
         // i.e. RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
         // layout.setLayoutParams(params);

         ImageView imageView1 = new ImageView(this);
         imageView1.setBackgroundResource(R.drawable.porta);

         ImageView imageView2 = new ImageView(this);
         imageView2.setBackgroundResource(R.drawable.sancarlo);
 
       
           
        }




Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/layout"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"

 >

  <ImageView
     android:id="@+id/prima"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_gravity="center_horizontal"
     android:layout_weight="3.00"
     android:src="@drawable/porta" />

  <LinearLayout
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="0dp"
   android:layout_weight="1"
   >

    <ImageView
     android:id="@+id/seconda"
     android:layout_width="0dp"
     android:layout_height="fill_parent"
     android:src="@drawable/sancarlo"
     android:layout_weight="1"
   />

    <ImageView
     android:id="@+id/terza"
     android:layout_width="0dp"
     android:layout_height="fill_parent"
     android:src="@drawable/castello"
     android:layout_weight="1"
   />
  </LinearLayout>
</LinearLayout>

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ImageView
« Risposta #1 il: 05 Maggio 2013, 21:24:20 CEST »
0
Hai sbagliato metodo :D

tu crei l'activity nel metodo onCreateOptionsMenu(Menu menu), mentre va nel metodo onCreate(Bundle bundle)

Inoltre, nello specifico, unreacheable code te lo dà perchè l'esecuzione del codice non andrà mai oltre a return super.onCreateOptionsMenu(menu); perchè appunto ritorna il valore e quindi termina il metodo :)

Quindi, per risolvere, metti l'inizializzazione del RelativeLayout nel metodo onCreate dell'activity :)
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline dicba

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD
  • Sistema operativo:
    Mac OS X 10.6.8
Re:ImageView
« Risposta #2 il: 05 Maggio 2013, 21:45:43 CEST »
0
Non mi da più l'errore facendo come mi hai riferito
Codice (Java): [Seleziona]
public void onCreate(Bundle bundle){
                 RelativeLayout layout = new RelativeLayout(this);

                 // TODO: Set attributes for layout
                 // i.e. RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
                 // layout.setLayoutParams(params);

                 ImageView imageView1 = new ImageView(this);
                 imageView1.setBackgroundResource(R.drawable.porta);

                 ImageView imageView2 = new ImageView(this);
                 imageView2.setBackgroundResource(R.drawable.sancarlo);
                 
                 ImageView imageView3 = new ImageView(this);
                 imageView3.setBackgroundResource(R.drawable.castello);
         
               
        }

il problema è che quando accedo all'activity mi crasha chiudendosi inaspettatamente.

Posto il logcat


05-05 21:42:15.969: E/AndroidRuntime(775): FATAL EXCEPTION: main
05-05 21:42:15.969: E/AndroidRuntime(775): android.app.SuperNotCalledException: Activity {it.sii.android.helloandroid/it.sii.android.helloandroid.NuovaActivity} did not call through to super.onCreate()
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.os.Looper.loop(Looper.java:137)
05-05 21:42:15.969: E/AndroidRuntime(775):    at android.app.ActivityThread.main(ActivityThread.java:4745)
05-05 21:42:15.969: E/AndroidRuntime(775):    at java.lang.reflect.Method.invokeNative(Native Method)
05-05 21:42:15.969: E/AndroidRuntime(775):    at java.lang.reflect.Method.invoke(Method.java:511)
05-05 21:42:15.969: E/AndroidRuntime(775):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-05 21:42:15.969: E/AndroidRuntime(775):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-05 21:42:15.969: E/AndroidRuntime(775):    at dalvik.system.NativeStart.main(Native Method)
05-05 21:42:16.358: D/dalvikvm(775): GC_CONCURRENT freed 634K, 9% free 8426K/9159K, paused 97ms+4ms, total 366ms

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ImageView
« Risposta #3 il: 05 Maggio 2013, 22:36:29 CEST »
0
did not call through to super.onCreate()


Prima di tutto nell'oncreate ci va super.oncreate(bundle); :)
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline dicba

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD
  • Sistema operativo:
    Mac OS X 10.6.8
Re:ImageView
« Risposta #4 il: 05 Maggio 2013, 23:07:40 CEST »
0
grazie per gli aiuti...sono ancora alle primissime armi.
Ora non mi da piu alcun errore solo che quando lancio l'activity non mi esce nulla (pagina bianca senza piu errore).
Aiuto please

Post unito: 05 Maggio 2013, 23:13:13 CEST
vi scrivo tutto il codice java e xml:

Codice (Java): [Seleziona]
package it.sii.android.helloandroid;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class NuovaActivity extends Activity {
        private ImageView imageView1;
        private ImageView imageView2;
        private ImageView imageView3;
        private RelativeLayout layout;
       
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater=getMenuInflater();
            inflater.inflate(R.menu.descrizione, menu);
            return super.onCreateOptionsMenu(menu);

           
       
           
        }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch(item.getItemId())
            {
            case R.id.technical:
                Intent intent = new Intent(NuovaActivity.this, Descrizione.class);
                /*Here ActivityA is current Activity and ColourActivity is the target Activity.*/
                startActivity(intent);
                break;
            case R.id.localize:
                break;
            case R.id.general:
                break;
            }
            return true;
        }
       
        public void onCreate(Bundle bundle){
                 RelativeLayout layout = new RelativeLayout(this);

                 

                 ImageView imageView1 = new ImageView(this);
                 imageView1.setBackgroundResource(R.drawable.porta);

                 ImageView imageView2 = new ImageView(this);
                 imageView2.setBackgroundResource(R.drawable.sancarlo);
                 
                 ImageView imageView3 = new ImageView(this);
                 imageView3.setBackgroundResource(R.drawable.castello);
                super.onCreate(bundle);
        }
        }
         

       
 
   

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/layout"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"

 >

  <ImageView
     android:id="@+id/prima"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_gravity="center_horizontal"
     android:layout_weight="3.00"
     android:src="@drawable/porta" />

  <LinearLayout
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="0dp"
   android:layout_weight="1"
   >

    <ImageView
     android:id="@+id/seconda"
     android:layout_width="0dp"
     android:layout_height="fill_parent"
     android:src="@drawable/sancarlo"
     android:layout_weight="1"
   />

    <ImageView
     android:id="@+id/terza"
     android:layout_width="0dp"
     android:layout_height="fill_parent"
     android:src="@drawable/castello"
     android:layout_weight="1"
   />
  </LinearLayout>
</LinearLayout>
« Ultima modifica: 05 Maggio 2013, 23:13:13 CEST da dicba, Reason: Merged DoublePost »

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:ImageView
« Risposta #5 il: 05 Maggio 2013, 23:50:05 CEST »
0
La chiamata alla super.onCreate va sempre come prima istruzione.

Detto questo, non dovrebbe vedersi nulla se non una pagina bianca: è corretto.
Infatti istanzi delle View ma non ne setti alcuna come layout della Activity.
In più hai scritto un layout in xml ma, allo stesso modo, non lo associ mai all'Activity. Da qui la pagina bianca.

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ImageView
« Risposta #6 il: 05 Maggio 2013, 23:50:46 CEST »
0
Sono le basi della programmazione per android, che mi pare a te manchino :) (senza offesa, siamo partiti tutti da così :D )

Comunque spiegare le basi attraverso un forum è molto difficile, quindi il mio consiglio è di cercare su google (miniera di informazioni)

Praticamente su android tu hai 2 "modi" per mostrare contenuti sul display:
1- crei un file xml che definisce il tuo layout (la tua schermata) e poi lo "inserisci nel display" quando l'activity viene creata.
    (android gestisce il tutto)

2- crei i vari elementi nel codice e poi li inserisci tu sempre via codice "nel display" (display per intenderci insomma, chiamala schermata o come vuoi)


Adesso, tu mi pare abbia sia uno sia l'altro modo, cioè definisci un layout ma non lo chiami mai via codice, crei elementi via codice e non li inserisci mai nella schermata.


Quindi per prima cosa scegli se usare i file xml o se inserire elementi via codice.
Io ti consiglio xml, è più facile da capire e tiene layout e codice ben distinti. Inoltre ti permette di specificare diversi layout per diversi display ma quello è un discorso più avanzato. Infine con i file xml puoi usufruire dell'interfaccia grafica per costruire i layout, che non è roba da poco.



Una volta scelto:

1- XML. Subito dopo aver chiamato super.oncreate nel metodo oncreate chiami il metodo setContentView(R.layout.tuo_layout) che mostra i vari elementi definiti nel file xml tuo_layout sullo schermo.

2- ti crei i vari elementi da codice (come hai già fatto), inserisci tutti gli elementi in un unico layout (nel tuo caso aggiungi le imageview al relativelayout attraverso la funzione addView ) e quindi chiami il metodo di prima (setContentView) passandogli come parametro il tuo layout.



Detta così sembra tanto difficile, in realtà è abbastanza facile. Qui sotto il codice:

Codice (Java): [Seleziona]
public void onCreate(Bundle bundle){
                super.onCreate(bundle);


                 /* Se vuoi usare elementi via codice

                 RelativeLayout layout = new RelativeLayout(this);

                 

                 ImageView imageView1 = new ImageView(this);
                 imageView1.setBackgroundResource(R.drawable.porta);

                 ImageView imageView2 = new ImageView(this);
                 imageView2.setBackgroundResource(R.drawable.sancarlo);
                 
                 ImageView imageView3 = new ImageView(this);
                 imageView3.setBackgroundResource(R.drawable.castello);

                layout.addView(imageView1);
                layout.addView(imageView2);
                layout.addView(imageView3);

                setContentView(layout); */






                /* Via file xml
               setContentView(R.layout.tuo_layout);  (cambia tuo_layout con l'id del file xml che hai postato) */

        }
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline dicba

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD
  • Sistema operativo:
    Mac OS X 10.6.8
Re:ImageView
« Risposta #7 il: 06 Maggio 2013, 00:01:14 CEST »
0
GRAZIE MILLEEE!!

ps si sono davvero alle prime armi..cmq il metodo xml mi sembra più intuitivo.