roxdragon
roxdragon

Reputation: 95

Call method in fragment

I have a problem with my code. This is my MainActivity.java:

public class MainActivity extends FragmentActivity implements InterfaceTaskFinished {

    ViewPager Tab;
    TabPagerAdapter TabAdapter;
    ActionBar actionBar;
    public boolean StatusConnection = false;
    public int thread = 0;

    //ARRIVI
    public String[] A_Compagnia = new String[200];
    public String[] A_CodiceVolo = new String[200];
    public String[] A_Citta = new String[200];

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TabAdapter = new TabPagerAdapter(getSupportFragmentManager());

        Tab = (ViewPager) findViewById(R.id.pager);


    }

    public class FlightTask extends AsyncTask<String, Integer, Boolean> {
        ProgressDialog prog;
        boolean result;
        private final InterfaceTaskFinished listener;

        public FlightTask(InterfaceTaskFinished listener) {
            this.listener = listener;
        }

        @Override
        protected void onPreExecute() {
            prog = new ProgressDialog(MainActivity.this);
            prog.setMessage("Connessione in corso...");
            prog.show();
            prog.setCanceledOnTouchOutside(false);
            prog.setCancelable(false);
        }

        @Override
        protected Boolean doInBackground(String... params) {
            try {
                org.jsoup.nodes.Document doc = Jsoup.connect("http://s.eu").timeout(10 * 1000).get();
                // ARRIVI
                org.jsoup.nodes.Element tabella = doc.getElementsByClass("tabella-voli").first();
                Iterator<org.jsoup.nodes.Element> iterator = tabella.select("td").iterator();

                while (iterator.hasNext()) {
                    thread++;

                    A_Compagnia[thread] = iterator.next().text();

                    ...
                }
            }
        }
    }
}

And I have a Fragment:

public class arrivi extends Fragment {
    ListView list;
    int thread = 0;
    List<RowItem> rowItems;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View arrivi = inflater.inflate(R.layout.arrivi, container, false);

        return arrivi;
    }

    public void CheckRow() {
        MainActivity m = new MainActivity();

        rowItems = new ArrayList<RowItem>();
        for (int i = 1; i <= thread; i++) {

            RowItem item = new RowItem(m.A_Compagnia[i], m.A_CodiceVolo[i], m.A_Citta[i], m.A_OraPrevista[i], m.A_OraStimata[i], m.A_StatoVolo[i]);
            rowItems.add(item);
            System.out.println("arrivi: " + m.A_Compagnia[i]);
        }
        list = (ListView) getView().findViewById(R.id.listView1);
        CustomBaseAdapter adapter = new CustomBaseAdapter(getActivity(), rowItems);
        list.setAdapter(adapter);
    }
}

But there is a problem. When i run my app and execute AsyncTask in MainActivity, everything is working fine. But I want execute checkRow() after onCreateView() in arrivi Fragment. If I execute checkRow() here:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
   View arrivi = inflater.inflate(R.layout.arrivi, container, false); 
       CheckRow();
   return arrivi;
}

My app crashes because the View is not created, and checkRow() contains:

        list=(ListView)getView().findViewById(R.id.listView1);

How can I solve this?

2. Question:

In my MainActivity I have 12 arrays... How can I pass them to the arrivi Fragment?

EDIT: I have a problem with FragmentTransiction in MainActivity.java:

public static arrivi newInstance(String[] A_Compagnia, String[] A_CodiceVolo) {

    arrivi fragment = new arrivi();
    android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    Bundle bundle = new Bundle();
    bundle.putStringArray("A_Compagnia", A_Compagnia);
    bundle.putStringArray("A_CodiceVolo", A_CodiceVolo);
    System.out.println("newistance eseguito");

    fragment.setArguments(bundle);

    transaction.replace(R.id.fragment_container, fragment);
    transaction.addToBackStack(null);
    transaction.commit();
    return fragment;
}
@Override
public void onTaskFinished() {
    newInstance(A_Compagnia,A_CodiceVolo);

}

Cannot make a static reference to the non-static method getSupportFragmentManager() from the type FragmentActivity

EDIT 2: Here is the code of the onCreate() method in my MainActivity:

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

    if (savedInstanceState == null) {
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.fragment_container, Arrivi.newInstance(A_Compagnia,A_CodiceVolo));
        transaction.commit();
    }

    TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
    Tab = (ViewPager)findViewById(R.id.pager);
    Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

                @Override
                public void onPageSelected(int position) {
                    actionBar = getActionBar();
                    actionBar.setSelectedNavigationItem(position);
                }
            });
    Tab.setAdapter(TabAdapter);

    actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.TabListener tabListener = new ActionBar.TabListener(){
        @Override
        public void onTabReselected(android.app.ActionBar.Tab tab, FragmentTransaction ft) {

        }
        @Override
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            Tab.setCurrentItem(tab.getPosition());
        }
        @Override
        public void onTabUnselected(android.app.ActionBar.Tab tab, FragmentTransaction ft) {

        }
    };

    actionBar.addTab(actionBar.newTab().setText("Info").setTabListener(tabListener));
    actionBar.addTab(actionBar.newTab().setText("Arrivi").setTabListener(tabListener));
    actionBar.addTab(actionBar.newTab().setText("Partenze").setTabListener(tabListener));
}

EDIT 3

There is an error error

I have edited the code as you suggested MainActivity edited:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

    if (savedInstanceState == null) {
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.fragment_container, Arrivi.newInstance(A_Compagnia,A_CodiceVolo));
        transaction.commit();
    }

    TabAdapter = new TabPagerAdapter(getSupportFragmentManager()); 
    Tab = (ViewPager)findViewById(R.id.pager); 
    Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

                @Override
                public void onPageSelected(int position) {
                    actionBar = getActionBar();
                    actionBar.setSelectedNavigationItem(position); 
                }
            });
    Tab.setAdapter(TabAdapter); 

    actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.TabListener tabListener = new ActionBar.TabListener(){
        @Override
        public void onTabReselected(android.app.ActionBar.Tab tab, FragmentTransaction ft) { 

        }
        @Override
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            Tab.setCurrentItem(tab.getPosition());
        }
        @Override
        public void onTabUnselected(android.app.ActionBar.Tab tab, FragmentTransaction ft) { 

        }
    }; 

    actionBar.addTab(actionBar.newTab().setText("Info").setTabListener(tabListener));
    actionBar.addTab(actionBar.newTab().setText("Arrivi").setTabListener(tabListener));
    actionBar.addTab(actionBar.newTab().setText("Partenze").setTabListener(tabListener));

    new FlightTask(this).execute();


}

layout_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

arrivi.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

    <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:cacheColorHint="#00000000" />

</RelativeLayout>

TabPageAdapter.java:

public class TabPagerAdapter extends FragmentStatePagerAdapter {

    public TabPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:
                //Fragement for Android Tab
                return new info();
            case 1:
                //Fragment for Ios Tab
                return new Arrivi();
            case 2:
                //Fragment for Windows Tab
                return new partenze();
        }
        return null;
    }

    @Override
    public int getCount() {
        return 3; //No of Tabs
    }
}

NEW ARRIVI.JAVA

public class Arrivi extends Fragment{
ListView list;
int thread = 0;
List<RowItem> rowItems;

//public static String[] A_Compagnia;
//public static String[] A_CodiceVolo;

public static Arrivi newInstance(String[] A_Compagnia, String[] A_CodiceVolo) {

    Arrivi fragment = new Arrivi();

    Bundle bundle = new Bundle();
    bundle.putStringArray("A_Compagnia", A_Compagnia);
    bundle.putStringArray("A_CodiceVolo", A_CodiceVolo);

    Log.i("newistance eseguito", "TAG");  

    fragment.setArguments(bundle);
    return fragment;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    System.out.println(" LOL: ");

    Bundle bundle = getArguments();
    if(bundle != null) {
        String[] dataA = bundle.getStringArray("A_Compagnia");
        String[] dataB = bundle.getStringArray("A_CodiceVolo");
        System.out.println(" ONVIEWCREATED: "+dataA);
    }
    if(bundle == null)          System.out.println(" BUNDLE NULL");

  //  CheckRow();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View arrivi = inflater.inflate(R.layout.arrivi, container, false); 
    super.onViewCreated(arrivi, savedInstanceState);

   return arrivi;
}

but

        if(bundle == null)          System.out.println(" BUNDLE NULL");

is null...

UPDATED2 ARRIVI.JAVA:

public class Arrivi extends Fragment{
ListView list;
int thread = 0;
List<RowItem> rowItems;

//ARRIVI
public String[] A_Compagnia = new String[200];
public String[] A_CodiceVolo = new String[200];
public String[] A_Citta = new String[200];
public String[] A_OraPrevista = new String[200];
public String[] A_OraStimata = new String[200];
public String[] A_StatoVolo = new String[200];

// PARTENZE
public String[] P_Compagnia = new String[200];
public String[] P_CodiceVolo = new String[200];
public String[] P_Citta = new String[200];
public String[] P_OraPrevista = new String[200];
public String[] P_OraStimata = new String[200];
public String[] P_StatoVolo = new String[200];





public static Arrivi newInstance(String[] A_Compagnia, String[] A_CodiceVolo, String[] A_Citta, String[] A_OraPrevista, String[] A_OraStimata, String[] A_StatoVolo) {

    this.A_Compagnia = A_Compagnia;
    this.A_CodiceVolo = A_CodiceVolo;
    this.A_Citta = A_Citta;
    this.A_OraPrevista = A_OraPrevista;
    this.A_OraStimata = A_OraStimata;
    this.A_StatoVolo = A_StatoVolo;

    this.P_Compagnia = P_Compagnia;
    this.P_CodiceVolo = P_CodiceVolo;
    this.P_Citta = P_Citta;
    this.P_OraPrevista = P_OraPrevista;
    this.P_OraStimata = P_OraStimata;
    this.P_StatoVolo = P_StatoVolo;
    Arrivi fragment = new Arrivi();

    System.out.println("NEWINSTANCE : "+A_Compagnia[1]);
    Log.i("newistance eseguito", "TAG");  

    return fragment;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    System.out.println(" onviewCreated: ");

    //    String[] dataA = bundle.getStringArray("A_Compagnia");
     //   String[] dataB = bundle.getStringArray("A_CodiceVolo");
    //    System.out.println(" ONVIEWCREATED: "+dataA);
    //}
    //if(bundle == null)            System.out.println(" BUNDLE NULL");

  //  CheckRow();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View arrivi = inflater.inflate(R.layout.arrivi, container, false); 
    super.onViewCreated(arrivi, savedInstanceState);

   return arrivi;
}

SWITCH / CASE IN MAINACTIVITY:

private class TabPagerAdapter extends FragmentStatePagerAdapter {

    public TabPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:
                return new info();
            case 1:
                return Arrivi.newInstance(A_Compagnia, A_CodiceVolo, A_Citta, A_OraPrevista, A_OraStimata, A_StatoVolo); 
            case 2:
                return new partenze();
        }
        return null;
    }

    @Override
    public int getCount() {
        return 3;
    }
}

-------RE-EDITED--------- arrivi.java:

public class Arrivi extends Fragment{
ListView list;
int thread = 0;
List<RowItem> rowItems;

//ARRIVI
public String[] A_Compagnia = new String[200];
public String[] A_CodiceVolo = new String[200];
public String[] A_Citta = new String[200];
public String[] A_OraPrevista = new String[200];
public String[] A_OraStimata = new String[200];
public String[] A_StatoVolo = new String[200];

// PARTENZE
public String[] P_Compagnia = new String[200];
public String[] P_CodiceVolo = new String[200];
public String[] P_Citta = new String[200];
public String[] P_OraPrevista = new String[200];
public String[] P_OraStimata = new String[200];
public String[] P_StatoVolo = new String[200];



public static Arrivi newInstance(String[] A_Compagnia, String[] A_CodiceVolo, String[] A_Citta, String[] A_OraPrevista, String[] A_OraStimata, String[] A_StatoVolo) {
    System.out.println("NEWINSTANCE : "+A_Compagnia[1]);

    Arrivi fragment = new Arrivi();
    Bundle bundle = new Bundle();
    bundle.putStringArray("A_Compagnia", A_Compagnia);
    bundle.putStringArray("A_CodiceVolo", A_CodiceVolo);
    bundle.putStringArray("A_Citta", A_Citta);
    bundle.putStringArray("A_OraPrevista", A_OraPrevista);
    bundle.putStringArray("A_OraStimata", A_OraStimata);
    bundle.putStringArray("A_StatoVolo", A_StatoVolo);
    fragment.setArguments(bundle);

  //  System.out.println("NEWINSTANCE : "+A_Compagnia[1]);

    return fragment;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    Bundle bundle = getArguments();
    if(bundle != null) {
        this.A_Compagnia = bundle.getStringArray("A_Compagnia");
        this.A_CodiceVolo = bundle.getStringArray("A_CodiceVolo");
        this.A_Citta = bundle.getStringArray("A_Citta");
        this.A_OraPrevista = bundle.getStringArray("A_OraPrevista");
        this.A_OraStimata = bundle.getStringArray("A_OraStimata");
        this.A_StatoVolo = bundle.getStringArray("A_StatoVolo");
    }
    System.out.println(" onviewCreated: "+A_Compagnia[1]);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View arrivi = inflater.inflate(R.layout.arrivi, container, false); 
    super.onViewCreated(arrivi, savedInstanceState);

   return arrivi;
}

MainActivity.java:

@Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:
                return new info();
            case 1:
                return Arrivi.newInstance(A_Compagnia, A_CodiceVolo, A_Citta, A_OraPrevista, A_OraStimata, A_StatoVolo); 
            case 2:

I get Null from here:

    public static Arrivi newInstance(String[] A_Compagnia, String[] A_CodiceVolo, String[] A_Citta, String[] A_OraPrevista, String[] A_OraStimata, String[] A_StatoVolo) {
    System.out.println("NEWINSTANCE : "+A_Compagnia[1]);

MainActivity.java

public void GetValue(String[] A_Compagnia, String[] A_CodiceVolo, String[] A_Citta, String[] A_OraPrevista, String[] A_OraStimata, String[] A_StatoVolo,
        String[] P_Compagnia, String[] P_CodiceVolo, String[] P_Citta, String[] P_OraPrevista, String[] P_OraStimata, String[] P_StatoVolo){

    this.A_Compagnia = A_Compagnia;
    this.A_CodiceVolo = A_CodiceVolo;
    this.A_Citta = A_Citta;
    this.A_OraPrevista = A_OraPrevista;
    this.A_OraStimata = A_OraStimata;
    this.A_StatoVolo = A_StatoVolo;

    this.P_Compagnia = P_Compagnia;
    this.P_CodiceVolo = P_CodiceVolo;
    this.P_Citta = P_Citta;
    this.P_OraPrevista = P_OraPrevista;
    this.P_OraStimata = P_OraStimata;
    this.P_StatoVolo = P_StatoVolo;

    System.out.println("MAIN__ "+this.P_Compagnia[1]);
}

SplashScreen.java

 @Override
    protected void onPostExecute(Boolean result) { 
         if(!result) {
             return;
         }
         if(listener != null) {
             prog.dismiss();

             listener.onTaskFinished();
         }
     }
}// FINE THREAD 


@Override
public void onTaskFinished() {

    MainActivity m = new MainActivity();
    m.GetValue(A_Compagnia,A_CodiceVolo,A_Citta,A_OraPrevista,A_OraStimata,A_StatoVolo,
            P_Compagnia,P_CodiceVolo,P_Citta,P_OraPrevista,P_OraStimata,P_StatoVolo);
}     

Thank you

Upvotes: 0

Views: 377

Answers (2)

Xaver Kapeller
Xaver Kapeller

Reputation: 49817

Regarding your questions:

1)

There is a lifecycle method called onViewCreated() which is executed after the method onCreateView() has finished. You can overwrite it like this and use it to execute checkRow():

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    checkRow();
}

2)

It is recommended to use static factory methods - usually called newInstance() - to create Fragment instances and to pass values to these instances. You can define such a static factory method inside your Fragment like this:

public static arrivi newInstance(String[] dataA, String[] dataB) {
    arrivi fragment = new arrivi();

    Bundle bundle = new Bundle();
    bundle.putStringArray(arrivi.EXTRA_DATA_A, dataA);
    bundle.putStringArray(arrivi.EXTRA_DATA_B, dataB);

    fragment.setArguments(bundle);
    return fragment;
}

You add the data to a Bundle and set it to the newly created Fragment instance. In the `Fragment you can retrieve this data like this:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    Bundle bundle = getArguments();
    if(bundle != null) {
        String[] dataA = bundle.getStringArray(EXTRA_DATA_A);
        String[] dataB = bundle.getStringArray(EXTRA_DATA_B);
        ...
    }
}

EXTRA_DATA_A and EXTRA_DATA_B are constants you would define in your Fragment like this:

public static final String EXTRA_DATA_A = "dataA";
public static final String EXTRA_DATA_B = "dataB";

You should usually only use constants like these as keys.

EDIT:

Your Arrivi Fragment should look like this:

public class Arrivi extends Fragment {

    //ARRIVI
    public String[] A_Compagnia = new String[200];
    public String[] A_CodiceVolo = new String[200];
    public String[] A_Citta = new String[200];
    public String[] A_OraPrevista = new String[200];
    public String[] A_OraStimata = new String[200];
    public String[] A_StatoVolo = new String[200];

    public static Arrivi newInstance(String[] A_Compagnia, String[] A_CodiceVolo, String[] A_Citta, String[] A_OraPrevista, String[] A_OraStimata, String[] A_StatoVolo) {
        Arrivi fragment = new Arrivi();

        Bundle bundle = new Bundle();
        bundle.putStringArray("A_Compagnia", A_Compagnia);
        bundle.putStringArray("A_CodiceVolo", A_CodiceVolo);
        bundle.putStringArray("A_Citta", A_Citta);
        bundle.putStringArray("A_OraPrevista", A_OraPrevista);
        bundle.putStringArray("A_OraStimata", A_OraStimata);
        bundle.putStringArray("A_StatoVolo", A_StatoVolo);
        fragment.setArguments(bundle);

        return fragment;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        Bundle bundle = getArguments();
        if(bundle != null) {
            this.A_Compagnia = bundle.getStringArray("A_Compagnia");
            this.A_CodiceVolo = bundle.getStringArray("A_CodiceVolo");
            this.A_Citta = bundle.getStringArray("A_Citta");
            this.A_OraPrevista = bundle.getStringArray("A_OraPrevista");
            this.A_OraStimata = bundle.getStringArray("A_OraStimata");
            this.A_StatoVolo = bundle.getStringArray("A_StatoVolo");
        }
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.arrivi, container, false);

        return view;
    }
}

Your SplashScreen Activity should look like this:

public class SplashScreen extends Activity  {

    public int thread = 0;

    //ARRIVI
    public String[] A_Compagnia = new String[200];
    public String[] A_CodiceVolo = new String[200];
    public String[] A_Citta = new String[200];
    public String[] A_OraPrevista = new String[200];
    public String[] A_OraStimata = new String[200];
    public String[] A_StatoVolo = new String[200];

    // PARTENZE
    public String[] P_Compagnia = new String[200];
    public String[] P_CodiceVolo = new String[200];
    public String[] P_Citta = new String[200];
    public String[] P_OraPrevista = new String[200];
    public String[] P_OraStimata = new String[200];
    public String[] P_StatoVolo = new String[200];

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.splashscreen);

        new FlightTask(this).execute();
    }

    public class FlightTask extends AsyncTask<String, Integer, Boolean> {
        private ProgressDialog prog;
        private boolean result;

        private final WeakReference<Context> contextReference;

        public FlightTask(Context context) {
            this.contextReference = new WeakReference<Context>(context);
        }

        @Override
        protected void onPreExecute() {
            prog = new ProgressDialog(SplashScreen.this);
            prog.setMessage("Connessione in corso...");
            prog.show();
            prog.setCanceledOnTouchOutside(false);
            prog.setCancelable(false);
        }

        @Override
        protected Boolean doInBackground(String... params) {
            try {
                org.jsoup.nodes.Document doc = Jsoup.connect("http://s.eu").timeout(10*1000).get();
                // ARRIVI
                org.jsoup.nodes.Element tabella = doc.getElementsByClass("tabella-voli").first();
                Iterator<org.jsoup.nodes.Element> iterator = tabella.select("td").iterator();

                while(iterator.hasNext()){
                    thread++;

                    A_Compagnia[thread] = iterator.next().text();
                    A_CodiceVolo[thread] = iterator.next().text();
                    A_Citta[thread] = iterator.next().text();
                    A_OraPrevista[thread] = iterator.next().text();
                    A_OraStimata[thread] = iterator.next().text();
                    A_StatoVolo[thread] = iterator.next().text();
                    System.out.println("THREAD ARRIVI: "+A_StatoVolo[thread]);
                }

                // PARTENZE
                org.jsoup.nodes.Element tabella2 = doc.getElementsByClass("tabella-voli").get(1);
                Iterator<org.jsoup.nodes.Element> iterator2 = tabella2.select("td").iterator();

                thread = 0;

                while(iterator2.hasNext()){
                    thread++;

                    P_Compagnia[thread] = iterator2.next().text();
                    P_CodiceVolo[thread] = iterator2.next().text();
                    P_Citta[thread] = iterator2.next().text();
                    P_OraPrevista[thread] = iterator2.next().text();
                    P_OraStimata[thread] = iterator2.next().text();
                    P_StatoVolo[thread] = iterator2.next().text();
                    System.out.println("THREAD PARTENZE: "+P_Citta[thread]);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return true;
        }

        @Override
        protected void onPostExecute(Boolean result) {
            if(!result) {
                return;
            }

            Context context = this.contextReference.get();
            if(context != null) {
                prog.dismiss();

                Intent intent = new Intent(context, MainActivity.class);
                intent.putExtra("A_Compagnia", A_Compagnia);
                intent.putExtra("A_CodiceVolo", A_CodiceVolo);
                intent.putExtra("A_Citta", A_Citta);
                intent.putExtra("A_OraPrevista", A_OraPrevista);
                intent.putExtra("A_OraStimata", A_OraStimata);
                intent.putExtra("A_StatoVolo", A_StatoVolo);
                intent.putExtra("P_Compagnia", P_Compagnia);
                intent.putExtra("P_CodiceVolo", P_CodiceVolo);
                intent.putExtra("P_Citta", P_Citta);
                intent.putExtra("P_OraPrevista", P_OraPrevista);
                intent.putExtra("P_OraStimata", P_OraStimata);
                intent.putExtra("P_StatoVolo", P_StatoVolo);
                context.startActivity(intent);
            }
        }
    }
}

And this is what your MainActivity should look like:

public class MainActivity extends Activity {

    ViewPager Tab;
    TabPagerAdapter TabAdapter;
    ActionBar actionBar;

    //ARRIVI
    public String[] A_Compagnia = new String[200];
    public String[] A_CodiceVolo = new String[200];
    public String[] A_Citta = new String[200];
    public String[] A_OraPrevista = new String[200];
    public String[] A_OraStimata = new String[200];
    public String[] A_StatoVolo = new String[200];

    // PARTENZE
    public String[] P_Compagnia = new String[200];
    public String[] P_CodiceVolo = new String[200];
    public String[] P_Citta = new String[200];
    public String[] P_OraPrevista = new String[200];
    public String[] P_OraStimata = new String[200];
    public String[] P_StatoVolo = new String[200];

    public String[] A = {"ciao","come"};


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();

        this.A_Compagnia = intent.getStringArrayExtra("A_Compagnia");
        this.A_CodiceVolo = intent.getStringArrayExtra("A_CodiceVolo");
        this.A_Citta = intent.getStringArrayExtra("A_Citta");
        this.A_OraPrevista = intent.getStringArrayExtra("A_OraPrevista");
        this.A_OraStimata = intent.getStringArrayExtra("A_OraStimata");
        this.A_StatoVolo = intent.getStringArrayExtra("A_StatoVolo");
        this.P_Compagnia = intent.getStringArrayExtra("P_Compagnia");
        this.P_CodiceVolo = intent.getStringArrayExtra("P_CodiceVolo");
        this.P_Citta = intent.getStringArrayExtra("P_Citta");
        this.P_OraPrevista = intent.getStringArrayExtra("P_OraPrevista");
        this.P_OraStimata = intent.getStringArrayExtra("P_OraStimata");
        this.P_StatoVolo = intent.getStringArrayExtra("P_StatoVolo");

        TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
        Tab = (ViewPager)findViewById(R.id.pager);
        Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                actionBar = getActionBar();
                actionBar.setSelectedNavigationItem(position);
            }
        });
        Tab.setAdapter(TabAdapter);

        actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener = new ActionBar.TabListener(){

            @Override
            public void onTabReselected(android.app.ActionBar.Tab arg0,
                                        android.app.FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onTabSelected(android.app.ActionBar.Tab arg0,
                                      android.app.FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onTabUnselected(android.app.ActionBar.Tab arg0,
                                        android.app.FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
        };

        actionBar.addTab(actionBar.newTab().setText("Info").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("Arrivi").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("Partenze").setTabListener(tabListener));
        //  new FlightTask(this).execute();
        System.out.println(A_Compagnia[1]);
        if (!isOnline()){
            try {
                AlertDialog alertDialog = new AlertDialog.Builder(this).create();

                alertDialog.setTitle("Info");
                alertDialog.setMessage("Connessione Internet non disponibile.");
                alertDialog.setButton("Esci", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }

                });
                alertDialog.show();
            }
            catch(Exception e) { }
        }
    }

    private class TabPagerAdapter extends FragmentStatePagerAdapter {

        public TabPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            switch (i) {
                case 0:
                    return new info();
                case 1:
                    return Arrivi.newInstance(A, A_Compagnia, A_CodiceVolo, A_Citta, A_OraPrevista, A_OraStimata, A_StatoVolo);
                case 2:
                    return new partenze();
            }
            return null;
        }

        @Override
        public int getCount() {
            return 3;
        }
    }

    public boolean isOnline() {

        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();

        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }
}

Upvotes: 1

G&#246;ksel G&#252;ren
G&#246;ksel G&#252;ren

Reputation: 1479

About your first question could you try?

list=(ListView)getActivity().findViewById(R.id.listView1);

About second question could you try like this?

MusicAlbumList fragment = new MusicAlbumList();
Bundle args = new Bundle();
String[] abc;
args.putStringArray("some string",abc);
fragment.setArguments(args);

Upvotes: 0

Related Questions