Autore Topic: onChildClick non apre activity  (Letto 484 volte)

Offline Lyuck

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • IZ3VFK
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 8.1
onChildClick non apre activity
« il: 28 Novembre 2014, 18:09:57 CET »
0
Salve, sono nuovo nel forum, e in maniera autodidatta mi sto addentrando nel mondo delle applicazioni per android.
Vengo subito al mio quesito, Sto cercando di creare una applicazione per un'associazione di cui faccio parte e mi sono bloccato sul menu, praticamente il menù è a comparsa da sx verso dx, le voci che lo compongono si espandono e compaiono altre voci...ho provato infinite soluzioni reperite in rete, ma quando vado a cliccare su una qualsiasi voce che dovrebbe aprire una nuova activity non succede nulla.
Spiego meglio: Apro il menu, Espando la prima voce, e quando clicco su una qualsiasi voce non fa nulla...nemmeno il il log si muove...vi posto il codice del mio main sperando in un vostro aiuto...

Codice (Java): [Seleziona]
package com.iz3vfk.ariverona;

import java.util.ArrayList;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.Toast;
import android.content.Intent;

@SuppressLint("NewApi")
public class MainActivity extends Activity implements OnChildClickListener {

        private DrawerLayout drawer;
        private ExpandableListView drawerList;
        private ActionBarDrawerToggle actionBarDrawerToggle;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                setGroupData();
                setChildGroupData();

                initDrawer();
        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main, menu);
        menu.findItem(R.id.action_settings).setIntent(new Intent(this, CustomDialog.class));
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        super.onOptionsItemSelected(item);
        this.closeOptionsMenu();
        startActivity(item.getIntent());
        return true;
    }


        private void initDrawer() {
                drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

                drawerList = (ExpandableListView) findViewById(R.id.left_drawer);

                drawerList.setAdapter(new NewAdapter(this, groupItem, childItem));

                drawerList.setOnChildClickListener(this);

                // actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer,
                // R.drawable.ic_drawer, R.string.open_drawer,
                // R.string.close_drawer) {
                // public void onDrawerClosed(View view) {
                // getActionBar().setSubtitle("open");
                // }
                //
                // /** Called when a drawer has settled in a completely open state. */
                // public void onDrawerOpened(View drawerView) {
                // getActionBar().setSubtitle("close");
                // }
                //
                // };
                //
                // drawer.setDrawerListener(actionBarDrawerToggle);

        }

        public void setGroupData() {
                groupItem.add("EMERGENZE");
                groupItem.add("SEZIONE");
                groupItem.add("UTILITÀ");
                groupItem.add("WEBCAM");
                groupItem.add("TOOL");
        }

        ArrayList<String> groupItem = new ArrayList<String>();
        ArrayList<Object> childItem = new ArrayList<Object>();

        public void setChildGroupData() {
                /**
                 * Add Data For EMERGENZE
                 */

                ArrayList<String> child = new ArrayList<String>();
                child.add("Radar N/E");
                child.add("Radar Valeggio S/M");
                child.add("Sism. M.te BALDO");
                child.add("Sism. BADIA");
                childItem.add(child);

                /**
                 * Add Data For SEZIONE
                 */

                child = new ArrayList<String>();
                child.add("News");
                child.add("Dove Siamo");
                childItem.add(child);
                /**
                 * Add Data For UTILITA
                 */

                child = new ArrayList<String>();
                child.add("Propagazione");
                child.add("DX Cluster");
                child.add("APRS");
                childItem.add(child);
                /**
                 * Add Data For WEBCAM
                 */

                child = new ArrayList<String>();
                child.add("Rif. PRIMANEVE");
                child.add("Sezione");
                childItem.add(child);
                /**
                 * Add Data For TOOL
                 */

                child = new ArrayList<String>();
                child.add("Info");
                childItem.add(child);
        }

        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            // Create a switch that switches on the specific child position.
            switch(childPosition) {
            case 0:
                // Go to child #0 specific class.
                Intent child1Intent = new Intent(this, Radar_NE.class);
                startActivity(child1Intent);
                break;
            case 1:
                // Go to child #1 specific class.
                Intent child2Intent = new Intent(this, CustomDialog.class);
                startActivity(child2Intent);
                break;
            }
            return false;
        }

}

Sperando di non aver violato qualche regola rimango in attesa di un vostro aiuto e ringrazio anticipatamente

Luca

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:onChildClick non apre activity
« Risposta #1 il: 28 Novembre 2014, 20:10:23 CET »
+1
Da quello che ho capito hai la tua expandible listView non sente il click su un figlio.

IO ho usato la ExpandibleListView un paio di volte.
Ricordo che facendo l'Override di
Codice (Java): [Seleziona]
  @Override
        public boolean isChildSelectable(int arg0, int arg1) {
            return true;
        }

true permette il click del child, e false no. POi magari mi sbaglio

Offline Lyuck

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • IZ3VFK
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 8.1
Re:onChildClick non apre activity
« Risposta #2 il: 29 Novembre 2014, 16:37:44 CET »
0
Perfetto tonno16 funziona, era impostato su false.... :-( Ora però mi si è presentato un'altro problema, mi apre si le nuove activity ma è come se andassero in primo piano e non riesco più ad aprire il menù :'( :'(...almeno finchè non uso il tastino di ritorno sul cellulare, che lui chiude l'activity...da cosa può dipendere questo errore?Abbiate pazienza ma vorrei imparare a fare qualcosina... :-[ :-[ :-[

Un saluto
Luca

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:onChildClick non apre activity
« Risposta #3 il: 29 Novembre 2014, 16:39:43 CET »
+1
Nessun errore. Se te fai partite un altra activity ovvio che non trovi il menu.

Se per menu intendi il navigation drawer allora hai proprio sbagliato logica.
Devi avere un unica activity dove la schermata principale è un fragment

Offline Lyuck

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • IZ3VFK
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 8.1
Re:onChildClick non apre activity
« Risposta #4 il: 29 Novembre 2014, 17:03:27 CET »
0
grazie mille tonno...scusa la mia ignoranza ma quindi mi spiegheresti cosa dovrei cambiare? perchè è vero potrei anche aggiungere un pulsante di ritorno che richiama la main ma non è il massimo...

Luca

PS se ti serve altro codice dimmelo...

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:onChildClick non apre activity
« Risposta #5 il: 29 Novembre 2014, 17:05:55 CET »
+1
La tua activity fa uso di un drawer e un Expandible listView.

Perchè non ti guardi un tutorial (anche su questo forum) su come usare il drawer layout. magari ci metti 4 voci "home", "voce1" "voce2" "voce3".

E vedi come funziona il tutto. Poi quando hai fatto puoi customizzare il tuo drawer mettendo la expandibleListView.