Autore Topic: linearlayout.addView(relativeLayout)  (Letto 704 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
linearlayout.addView(relativeLayout)
« il: 29 Maggio 2013, 11:55:07 CEST »
0
Salve! è possibile inserire n relativeLayout dentro un linearLayout attraverso l'addview?
Posto un pò di codice forse capite cosa intendo

prova è un relative layout definito in un file xml se al posto di indicare questo, lascio prova = ner RelativeLayout(this) funziona tutto, ma naturalmente perdo le varie dipendenze degli oggetti


Codice (XML): [Seleziona]
package com.example.provajson2;


import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Path;
import android.graphics.Path.Direction;
import android.graphics.RectF;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MenuNonLoggatoWithSnap extends Activity{
       
        private CustomScrollView horizontalScrollView;
        private LinearLayout linearLayout;
        Intent text;
       
        private RelativeLayout prova;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.menu_nl_snap);
                ActionBar ab = getActionBar();
        ab.setHomeButtonEnabled(true);
        ab.setDisplayHomeAsUpEnabled(true);
                setTitle("Sing Ring");
               
               
                //cerco di gestire lo snap
               
                int width = this.getWindowManager().getDefaultDisplay().getWidth();
                 horizontalScrollView = new CustomScrollView(this, 5, width);
                 
                  linearLayout = (LinearLayout) findViewById(R.id.layer);
                  linearLayout.addView(horizontalScrollView);
                 
                  LinearLayout container = new LinearLayout(this);
                  container.setLayoutParams(new LayoutParams(linearLayout.getWidth(), linearLayout.getHeight()));
                  // container.setHeight(height);
                 
                  for(int i =0; i<5; i++){
                 //Qui disegno tutte le pagine, prendendo i valori dal vettore di json (non ancora implementato)
               
                /*  TextView Titolo = new TextView(this);
                  Titolo.setWidth(width);
                  //textView.setHeight(height);
                  Titolo.setGravity(Gravity.CENTER);
                  Titolo.setText("Schermo numero " +i); */  // in questo modo non ho problemi
                         
                         
                         RelativeLayout prova  = (RelativeLayout) findViewById(R.layout.elementogallery);  //creandolo così mi da un eccezione per un puntatore a null
                        /* TextView tvCanzone = (TextView) findViewById(R.id.tvCanzone);
                         TextView tvArtista = (TextView) findViewById(R.id.tvArtista);
                         TextView tvPrezzo = (TextView) findViewById(R.id.ImageView04);
                         TextView GenereDifficolta = (TextView) findViewById(R.id.tvGenereDifficolta);
                         ImageView img_cantante = (ImageView) findViewById(R.id.imageView1);
                 
                         tvCanzone.setText("blabla " +i);
                  prova.setBackgroundResource(R.drawable.img_canzone_grande); */
                 
                  container.addView(prova);
                  }
                 
horizontalScrollView.addView(container);
               
               
               

          //imposto i controlli solo alla pressione dei tasti
   //Devo definire 10 bottoni per la galleria
   Button Registrati = (Button) findViewById(R.id.Button01);
   Button LogIn = (Button) findViewById(R.id.buttonLogIn);
   Button Catalogo = (Button) findViewById(R.id.button1);
 
}
       
       

}

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:linearlayout.addView(relativeLayout)
« Risposta #1 il: 29 Maggio 2013, 14:15:51 CEST »
0
puoi fare l'inflate della view usando l'id dell'xml
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:linearlayout.addView(relativeLayout)
« Risposta #2 il: 29 Maggio 2013, 14:51:48 CEST »
0
In codice?
perchè facendo l'inflate mettendo dentro il relative layout con l'id dell'xml poi non posso accedere ai singoli elementi ( nullPointerExceptions)

Codice (Java): [Seleziona]
                  horizontalScrollView = new CustomScrollView(this, 3, width);
                 
                  linearLayout = (LinearLayout) findViewById(R.id.layer);
                  linearLayout.addView(horizontalScrollView);
                 
                  LinearLayout container = new LinearLayout(this);
                 
                  RelativeLayout rela = (RelativeLayout) findViewById(R.layout.elementogallery);
                  container.addView(rela);
                  container.addView(rela);
                  container.addView(rela);
                 
                  horizontalScrollView.addView(container);

Codice (XML): [Seleziona]
05-29 09:01:25.066: E/AndroidRuntime(3675): FATAL EXCEPTION: main
05-29 09:01:25.066: E/AndroidRuntime(3675): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.provajson2/com.example.provajson2.MenuNonLoggatoWithSnap}: java.lang.NullPointerException
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.os.Looper.loop(Looper.java:137)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.ActivityThread.main(ActivityThread.java:5039)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at java.lang.reflect.Method.invokeNative(Native Method)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at java.lang.reflect.Method.invoke(Method.java:511)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at dalvik.system.NativeStart.main(Native Method)
05-29 09:01:25.066: E/AndroidRuntime(3675): Caused by: java.lang.NullPointerException
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.view.ViewGroup.addView(ViewGroup.java:3148)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.view.ViewGroup.addView(ViewGroup.java:3131)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at com.example.provajson2.MenuNonLoggatoWithSnap.onCreate(MenuNonLoggatoWithSnap.java:56)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.Activity.performCreate(Activity.java:5104)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-29 09:01:25.066: E/AndroidRuntime(3675):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

alla riga 56 creo il relative layout con il findViewById(r.id.elementogallery)


 Non so se può servire, ma questo è il layout dell'elemento gallery

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

    <ImageView
       android:id="@+id/imageView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:scaleType="fitCenter"
       android:src="@drawable/img_canzone_grande" />

    <RelativeLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBottom="@+id/imageView1"
       android:layout_alignLeft="@+id/imageView1"
       android:layout_alignRight="@+id/imageView1"
       android:background="@drawable/box_testo_grande" >

        <TextView
           android:id="@+id/tvCanzone"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:layout_marginLeft="15dp"
           android:layout_marginTop="10dp"
           android:text="Titolo canzone"
           android:textAppearance="?android:attr/textAppearanceLarge"
           android:textColor="#FFFFFFFF" />

        <TextView
           android:id="@+id/tvArtista"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignLeft="@+id/tvCanzone"
           android:layout_below="@+id/tvCanzone"
           android:text="Artista"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:textColor="#FFFFFFFF"
           android:layout_marginBottom="8dp"/>

        <TextView
           android:id="@+id/imageView4"
           android:layout_width="65dp"
           android:layout_height="65dp"
           android:layout_alignParentRight="true"
           android:layout_centerVertical="true"
           android:layout_marginRight="10dp"
           android:background="@drawable/ellisse"
           android:gravity="center"
           android:text="€ 0.89"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:textColor="#FF000000" />

        <TextView
           android:id="@+id/tvGenereDifficolta"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignLeft="@+id/tvArtista"
           android:layout_below="@+id/tvArtista"
           android:text="Genere e difficoltà"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:textColor="#FFFFFFFF" />

        <ImageView
           android:id="@+id/imageView3"
           android:layout_width="50dp"
           android:layout_height="100dp"
           android:layout_alignParentTop="true"
           android:layout_alignRight="@+id/imageView4"
           android:scaleType="fitStart"
           android:src="@drawable/free_grande"
           android:visibility="visible" />

    </RelativeLayout>

   

</RelativeLayout>
« Ultima modifica: 29 Maggio 2013, 15:00:40 CEST da gabric »

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:linearlayout.addView(relativeLayout)
« Risposta #3 il: 29 Maggio 2013, 16:05:06 CEST »
0
Codice (Java): [Seleziona]
LinearLayout mainLayout = (LinearLayout ) findViewById(R.id.linear_layout);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i=0; i<RELATIVE_LAYOUT_COUNT; i++){

 RelativeLayout childLayout = inflater.inflate(R.layout.relativeLayout, null);
 View elementoInRelativeLayout = childLayout.findViewById(R.id.tuo_elemento);
// elementoInRelativeLayout.doSomething....
 mainLayout.addView(childLayout);
}

Buttato giu a occhi chiusi, vedi se ti funziona
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:linearlayout.addView(relativeLayout)
« Risposta #4 il: 29 Maggio 2013, 16:49:04 CEST »
0
uhm no, così non crasha, ma non carica niente, cioè lascia la view vuota

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:linearlayout.addView(relativeLayout)
« Risposta #5 il: 29 Maggio 2013, 23:01:08 CEST »
0
uhm no, così non crasha, ma non carica niente, cioè lascia la view vuota
quale view? il relative layout l'hai riempito nell'xml o nel codice?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:linearlayout.addView(relativeLayout)
« Risposta #6 il: 29 Maggio 2013, 23:15:35 CEST »
0
nel xml

Post unito: 30 Maggio 2013, 10:29:46 CEST
Ancora niente da fare...
ecco l'attuale codice
Codice (XML): [Seleziona]
          linearLayout.addView(horizontalScrollView);
                 
                  LinearLayout container = new LinearLayout(this);
                  container.setLayoutParams(new LayoutParams(linearLayout.getWidth(), linearLayout.getHeight()));
                 
                 
                  LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                  for (int i=0; i<3; i++){


                   RelativeLayout childLayout = (RelativeLayout) inflater.inflate(R.layout.semplice, null);
                   TextView elementoInRelativeLayout = (TextView) childLayout.findViewById(R.id.tvCanzone);
                  elementoInRelativeLayout.setText("prova prova prova");
                 // elementoInRelativeLayout.doSomething....
                   container.addView(childLayout);
                  }
               
                  horizontalScrollView.addView(container);


continua a visualizzarmi le schermate vuote, e nemmeno scrollabili, si inchioda sulla prima (semplice è un relative layout con solo una textview)

Post unito: 31 Maggio 2013, 09:12:18 CEST
Non mi piace uppare, ma non riesco a risolvere questo problema.. posso aggiungere solo view che non siano altri layout, altrimenti il tutto crasha...
« Ultima modifica: 31 Maggio 2013, 09:12:18 CEST da gabric, Reason: Merged DoublePost »