Autore Topic: Problema da principiante sui Fragment  (Letto 1970 volte)

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Problema da principiante sui Fragment
« il: 16 Settembre 2014, 17:38:04 CEST »
0
Sto leggendo un manuale sulla programmazione Android, e sono alle prese con i Fragment.
Il seguente programma (che ho copiato da un tutorial) NON funziona, il metodo "add" (della linea 23) e'
sottolineato in rosso, MA CHE ERRORE C'E'?
I pannelli "Console" e "LogCat" di Eclipse sono entrambi completamente vuoti.

Quando vado con il mouse sopra a "add" mi appare scritto:

The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int,
HelloFragment)

invece a me sembra che i parametri siano corretti.

MainActivity.java
Codice (Java): [Seleziona]
package com.prove.provaproject_33_fragment;

import android.support.v7.app.ActionBarActivity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null)
        {
                // Il metodo "add" e' sottolineato rosso, PERCHE?
            getSupportFragmentManager().beginTransaction().add(
                R.id.container, new HelloFragment()).commit();
 
        }
    }
}

class HelloFragment extends Fragment
{
    public HelloFragment() {
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
          {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
 
    }
 
}

activity_main.xml
Codice (XML): [Seleziona]
<FrameLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/container"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

fragment_main.xml
Codice (XML): [Seleziona]
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:padding="@dimen/activity_vertical_margin">
 
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="fragment_main" />
</RelativeLayout>

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema da principiante sui Fragment
« Risposta #1 il: 16 Settembre 2014, 19:17:42 CEST »
0
Credo dipenda dal Fragment negli import. Se usi il getsupportfragmentmanager, anche il fragment deve essere quello della support library.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #2 il: 16 Settembre 2014, 19:27:38 CEST »
0
In quest'altra versione del programma importo "android.support.v4.app.FragmentTransaction", ma e' sempre come
prima.

MainActivity.java
Codice (Java): [Seleziona]
package com.prove.provaproject_33_fragment;

import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null)
        {
                /*
            getSupportFragmentManager().beginTransaction().add(
                R.id.container, new HelloFragment()).commit();
            */

                android.support.v4.app.FragmentManager manager=getSupportFragmentManager();
                FragmentTransaction ft=manager.beginTransaction();
                // Il metodo "add" e' sottolineato in rosso, PERCHE?
                ft.add(R.id.container, new HelloFragment());
                ft.commit();           
        }
    }
}

class HelloFragment extends Fragment
{
    public HelloFragment() {
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
          {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
 
    }
 
}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema da principiante sui Fragment
« Risposta #3 il: 16 Settembre 2014, 21:03:56 CEST »
0
Credo dipenda dal Fragment negli import. Se usi il getsupportfragmentmanager, anche il fragment deve essere quello della support library.

Avevo detto Fragment, non fragmentTransaction.

Codice (Java): [Seleziona]
import android.support.v4.app.Fragment
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #4 il: 20 Settembre 2014, 22:18:23 CEST »
0
Provato anche con questo e il programma continua a NON funzionare.

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Problema da principiante sui Fragment
« Risposta #5 il: 20 Settembre 2014, 22:37:46 CEST »
0
Ciao,
Guarda i tuoi import, dovrebbero essere così:
Codice (Java): [Seleziona]
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #6 il: 21 Settembre 2014, 00:13:19 CEST »
0
Gli import sono corretti ma il programma NON funziona.

Riguardo ai Fragment puoi farmi un piccolo esempio di una activity con due fragment (un fragment con due bottoni chiamati "Bottone 1" e "Bottone 2" e un fragment con solo una TextView) che quando uno clicca sul "Bottone 1" del primo fragment nel secondo fragment appare scritto "Cliccato sul bottone 1" (e similmente quando uno clicca su "Bottone 2" sul secondo fragment appare "Cliccato sul bottone 2") ?

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #7 il: 23 Settembre 2014, 23:52:51 CEST »
0
Gli import sono corretti ma il programma NON funziona.

Riguardo ai Fragment puoi farmi un piccolo esempio di una activity con due fragment (un fragment con due bottoni chiamati "Bottone 1" e "Bottone 2" e un fragment con solo una TextView) che quando uno clicca sul "Bottone 1" del primo fragment nel secondo fragment appare scritto "Cliccato sul bottone 1" (e similmente quando uno clicca su "Bottone 2" sul secondo fragment appare "Cliccato sul bottone 2") ?

Quello che chiedi riguardo ai fragment si realizza molto semplicemente:

l'activity a partire dalla quale visualizzi i fragment, deve implementare una tua interfaccia, con i metodi che ti servono

Codice (Java): [Seleziona]
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener, OnFragmentInteractionListener
Dentro i fragment invece, casti l'activity in modo da poter richiamare i metodi

Codice (Java): [Seleziona]
@Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener");
        }
    }

Successivamente basta che nell'activity implementi i metodi dell'interfaccia (ovviamente :) ) e richiamandoli dai vari fragment, puoi interagire con tutto.

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #8 il: 27 Settembre 2014, 11:02:05 CEST »
0
La spiegazione e' troppo complicata, puo' farmi un esempio di un programma completo?

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #9 il: 27 Settembre 2014, 12:24:13 CEST »
0
Per avere un esempio completo e funzionante, è sufficiente creare una nuova app da Android Studio e scegliere un template iniziale che prevede Activity + Fragment ;)

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #10 il: 27 Settembre 2014, 13:48:48 CEST »
0
Ma io attualmente uso Eclipse ...
Puoi farmi un esempio SEMPLICE e completo per favore?

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Problema da principiante sui Fragment
« Risposta #11 il: 27 Settembre 2014, 14:15:53 CEST »
0
Provato anche con questo e il programma continua a NON funzionare.

Che significa non funzionare...
Non compila? O quando vai runtime va in errore?
Nel primo caso, leggi bene il motivo per cui non compila, nel secondo riporta qui il logcat.


Ma io attualmente uso Eclipse ...
Male..

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #12 il: 27 Settembre 2014, 16:02:55 CEST »
0
Non compila.

Quando clicco su "Run>Run As>Android Application" mi appare una finestra intitolata "Android Launch" con il testo "Your project contains error(s), please fix them before running your application".

I pannelli "Console" e "LogCat" di Eclipse sono entrambi completamente vuoti.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema da principiante sui Fragment
« Risposta #13 il: 27 Settembre 2014, 16:53:39 CEST »
0
Quando clicco su "Run>Run As>Android Application" mi appare una finestra intitolata "Android Launch" con il testo "Your project contains error(s), please fix them before running your application".

C'è un errore nel codice. Cerca le righe con una X rossa a fianco.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sui Fragment
« Risposta #14 il: 27 Settembre 2014, 17:22:37 CEST »
0
Il seguente programma (che ho copiato da un tutorial) NON funziona, il metodo "add" (della linea 23) e'
sottolineato in rosso, MA CHE ERRORE C'E'?
I pannelli "Console" e "LogCat" di Eclipse sono entrambi completamente vuoti.

Quando vado con il mouse sopra a "add" mi appare scritto:

The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int,
HelloFragment)

invece a me sembra che i parametri siano corretti.

MainActivity.java
Codice (Java): [Seleziona]
package com.prove.provaproject_33_fragment;

import android.support.v7.app.ActionBarActivity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null)
        {
                // Il metodo "add" e' sottolineato rosso, PERCHE?
            getSupportFragmentManager().beginTransaction().add(
                R.id.container, new HelloFragment()).commit();
 
        }
    }
}

class HelloFragment extends Fragment
{
    public HelloFragment() {
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
          {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
 
    }
 
}

activity_main.xml
Codice (XML): [Seleziona]
<FrameLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/container"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

fragment_main.xml
Codice (XML): [Seleziona]
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:padding="@dimen/activity_vertical_margin">
 
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="fragment_main" />
</RelativeLayout>


Post unito: 27 Settembre 2014, 17:30:20 CEST
Riguardo ai Fragment qualcuno puo' farmi un piccolo esempio di una activity con due fragment (un fragment con due
bottoni chiamati "Bottone 1" e "Bottone 2" e un fragment con solo una TextView) che quando uno clicca sul
"Bottone 1" del primo fragment nel secondo fragment appare scritto "Cliccato sul bottone 1" (e similmente quando
uno clicca su "Bottone 2" sul secondo fragment appare "Cliccato sul bottone 2") ?
« Ultima modifica: 27 Settembre 2014, 17:30:20 CEST da oberdank, Reason: Merged DoublePost »