Précédent   Forum des professionnels en informatique > Java > Général Java > Java & Mobiles > Android
Android Forum d'entraide sur Android, la plateforme mobile de Google pour téléphones portables et Smartphones. Avant de poster -> FAQ Android
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2012, 13h31   #1
Invité de passage
 
Homme
Développeur Java
Inscription : février 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2012
Messages : 2
Points : 0
Points : 0
Par défaut Tabhost, Fragment et Activity

Bonjour,

J'ai un écran à onglet (géré par le tabhost) et j'utilise fragmentactivity et fragment (en remplacement de tabactivity).
Je souhaiterais lancer dans le fragment créé une activity (avec layout et gestion d'une base et de bouton).
Est-ce possible?
Comment lancer une activity à partir d'une classe fragment?
J'arrive bien à "inflater" le layout attendu mais comment lancer l'activity lié au layout tout en gardant les onglets (tabhost)?

Merci pour votre aide

Le code de ma principale activité :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import java.util.HashMap;
 
 
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
 
public class MonActivite extends FragmentActivity {
 
TabHost mTabHost;
private TabSpec tabSpec;
TabManager mTabManager;
 
 
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        mTabHost = (TabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup();
 
        mTabManager = new TabManager(this, mTabHost, R.id.realtabcontent);
 
        mTabManager.addTab(mTabHost.newTabSpec("tab1").setIndicator("tab1"),
         Tab1Fragment.class, null);
        mTabManager.addTab(mTabHost.newTabSpec("tab2").setIndicator("tab2"), Tab2Fragment.class, null);
 
 
        if (savedInstanceState != null) {
            mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
        }
    }
 
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("tab", mTabHost.getCurrentTabTag());
    }
 
    public static class TabManager implements TabHost.OnTabChangeListener {
        private final FragmentActivity mActivity;
        private final TabHost mTabHost;
        private final int mContainerId;
        private final HashMap<String, TabInfo> mTabs = new HashMap<String, TabInfo>();
        TabInfo mLastTab;
 
        static final class TabInfo {
            private final String tag;
            private final Class<?> clss;
            private final Bundle args;
            private Fragment fragment;
 
            TabInfo(String _tag, Class<?> _class, Bundle _args) {
                tag = _tag;
                clss = _class;
                args = _args;
            }
        }
 
        static class DummyTabFactory implements TabHost.TabContentFactory {
            private final Context mContext;
 
            public DummyTabFactory(Context context) {
                mContext = context;
            }
 
            public View createTabContent(String tag) {
                View v = new View(mContext);
                v.setMinimumWidth(0);
                v.setMinimumHeight(0);
                return v;
            }
        }
 
        public TabManager(FragmentActivity activity, TabHost tabHost, int containerId) {
            mActivity = activity;
            mTabHost = tabHost;
            mContainerId = containerId;
            mTabHost.setOnTabChangedListener(this);
        }
 
        public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) {
            tabSpec.setContent(new DummyTabFactory(mActivity));
            String tag = tabSpec.getTag();
 
            TabInfo info = new TabInfo(tag, clss, args);
 
            // Check to see if we already have a fragment for this tab, probably
            // from a previously saved state.  If so, deactivate it, because our
            // initial state is that a tab isn't shown.
            info.fragment = mActivity.getSupportFragmentManager().findFragmentByTag(tag);
            if (info.fragment != null && !info.fragment.isDetached()) {
                FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
                ft.detach(info.fragment);
                ft.commit();
            }
 
            //tabSpec.setContent(intent);
            mTabs.put(tag, info);
            mTabHost.addTab(tabSpec);
        }
 
        public void onTabChanged(String tabId) {
            TabInfo newTab = mTabs.get(tabId);
            if (mLastTab != newTab) {
                FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
                if (mLastTab != null) {
                    if (mLastTab.fragment != null) {
                        ft.detach(mLastTab.fragment);
                    }
                }
                if (newTab != null) {
                    if (newTab.fragment == null) {
                        newTab.fragment = Fragment.instantiate(mActivity,newTab.clss.getName(), newTab.args);
                        ft.add(mContainerId, newTab.fragment, newTab.tag);
 
                    } else {
                        ft.attach(newTab.fragment);
                    }
                }
 
                mLastTab = newTab;
                ft.commit();
                mActivity.getSupportFragmentManager().executePendingTransactions();
            }
        }
    }
}
Le code de mon fragment dans le quel je voudrais faire un intent d'une activity:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
public class Tab1Fragment extends Fragment {
 
public void onAttach(Activity activity){
super.onAttach(activity);
}
 
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Intent monIntent = new Intent(getActivity(),ActiviteSolde.class);
 
//startActivity(monIntent);
 
 
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
 
            return null;
        }
 
return (LinearLayout)inflater.inflate(R.layout.solde, container, false);
}
 
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
 
 
}
}
kingconv est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h32.


 
 
 
 
Partenaires

Hébergement Web