我有一个与FragmentTabHost有活动的Android应用程序。
所以这是xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4d4d4d"
android:baselineAligned="false"
android:gravity="center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="4"
android:orientation="vertical">
<EditText
android:id="@+id/editDescrizione"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/inserisciragioneSociale"
android:inputType="text"
android:singleLine="true" />
</LinearLayout>
<ImageButton
android:id="@+id/ImageButton02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@null"
android:onClick="checkCliente"
android:src="@drawable/search_" />
</LinearLayout>
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
</LinearLayout>
这是java类:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.view_clienti);
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
mTabHost.addTab(
mTabHost.newTabSpec("tab1").setIndicator("Tab 1", null),
infoCliente.class, null);
mTabHost.addTab(
mTabHost.newTabSpec("tab2").setIndicator("Tab 2", null),
infoCliente.class, null);
mTabHost.addTab(
mTabHost.newTabSpec("tab3").setIndicator("Tab 3", null),
infoCliente.class, null);
apriConnessioneDB();
}
public void ricercaCliente(String ragioneSociale){
List<Cliente> listaClienti = db.fetchClienti(ragioneSociale);
Cliente cliente = null;
if(listaClienti==null || listaClienti.size()==0){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle(R.string.AlertErrore_Titolo);
// Setting Dialog Message
alert.setMessage(R.string.AlertErroreClienteInesistente_Descrizione);
alert.show();
}else if(listaClienti.size()==1){
//nel database � presente un solo articolo
//in base ai criteri di ricerca
cliente = listaClienti.get(0);
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
// creaAlertQuantita(articolo);
}else{
//se ci sono pi� articoli in base al criterio di ricerca,
//devo mostrare l'alert con una lista
List<String> lista = new ArrayList<String>();
for(Iterator<Cliente> it = listaClienti.iterator(); it.hasNext();){
Cliente cliente2 = it.next();
lista.add(cliente2.getDescrizione());
}
final CharSequence[] items = lista.toArray(new String[lista.size()]);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Più clienti trovati");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String descrizione= (String) items[which];
List<Articoli> listaArticoli = db.fetchArticoli("",descrizione);
if(listaArticoli!=null && listaArticoli.size()==1){
Articoli articolo = listaArticoli.get(0);
//creaAlertQuantita(articolo);
//alertArticoli.dismiss();
}else{
}
}
});
alertArticoli = builder.create();
alertArticoli.show();
}
}
现在我想要这个,当用户通过EditTextView检查托运人时,我从数据库中获得了一个Object。我想在Fragment中插入此对象的信息。 现在在onCreate方法中我插入了所有选项卡,同一个类,但我将为这三个选项卡创建三个不同的类。
答案 0 :(得分:0)
似乎你可以通过你现在设置为null的Bundle paramaneter为标签添加参数。
mTabHost.addTab( mTabHost.newTabSpec("tab1").setIndicator("Tab 1", null), infoCliente.class, null);
因此,不要将Bundle设置为null,而是可以执行以下操作:
mTabHost.fragment = Fragment.instantiate(mContext, mTabHost.clss.getName(), mTabHost.args);
点击此链接了解更多信息: Android : passing parameters to a tab
答案 1 :(得分:0)
您可以创建Bundle
并使用putExtra()
方法来放置Object
。然后,您必须在Fragment
onCreate()
中检索它。
如果您可以t put
对象`,请尝试使用GSON库。