2012-11-09 86 views
0

我的應用程序被分成片段,每個片段都有自己的佈局(.xml文件)。片段和視圖

當我開始可視化我的活動的onCreate()方法中的第一個片段時,我用setContentView(fragment_first)設置了適當的佈局。如何更改,例如,第二個片段(fragment_second)中包含的TextView

回答

0

一般來說,Fragment或任何Activity或就應該更新自己的內部UI控件。這很容易,而且設計很好。其他類/事件可能會更新Fragment數據的狀態,但它會處理該狀態的顯示方式。

編輯回答評論問題:

這是如何在片段加載內容視圖:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view = inflater.inflate(R.layout.pump_info, container, false); 
    return view; 
} 
+0

好的,我該如何爲該片段創建一個類並將其綁定,以便我可以在片段上加載該佈局? –

+0

看到我上面的修改。 –

+0

如果這個答案有幫助,你應該將其標記爲答案。如果在人們花時間幫助您時您不接受有效答案,人們將不願意在將來幫助您。 –

0

看來你設置你打算在你的活動你的第一個片段的XML文件。 你應該做的總之是創建一個全新的類,並將其擴展爲android.support.v4.app.Fragment,也讓你的活動擴展FragmentActivity而不僅僅是Activity。

然後在您android.support.v4.app.Fragment類(我從現在開始打電話給你的片段),你應該重寫onCreateView(LayoutInflater inflate, ViewGroup container, Bundle savedInstanceState){}方法,在這種方法中,你應該把這樣一行: View view = inflater.inflate(R.layout.the_xml_layout_for_this_fragment, container, false);其膨脹的片段和植物它的佈局在你活動佈局的適當位置。

在此之後,您需要return view;,但在返回此視圖之前,您可以執行view.findViewById(R.id.id_of_a_view_from_the_xml_layout_file);以查找元素並對其進行操作。

您應該爲您的應用中需要的每個片段創建一個這樣的片段類,讓它膨脹自己的xml佈局文件。

有關更詳細的說明,您可以看到http://www.youtube.com/watch?v=4BKlST82Dtg或其他視頻或書面教程。

編輯:這是一個基本的片段類:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class MyFrag extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    // inflate the view: 
    View view = inflater.inflate(R.layout.myfrag_layout, container, false); 

    // manipulate widgets, for example: 
    TextView textView = (TextView) view.findViewById(R.id.textView); 
    textView.setText("read me!!!"); 

    // return the view: 
    return view; 
    } 

} 

,它的育兒活動:

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 

public class MyFragmentActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // notice that there is a different layout file for the activity and for 
    // the fragment! 
    setContentView(R.layout.xml_layout_for_the_activity); 

    // to start the fragment and stick it into your activity (not needed if 
    // you use ViewPager) 
    FragmentManager fragMan = getSupportFragmentManager(); 
    fragMan.beginTransaction() 
     .add(R.id.the_visual_element_that_will_contain_your_fragments_layout, fragMan) 
     .commit(); 
    } 

} 
+0

順便說一句,你不必調用你的FragmentManager fragMan,我這樣做是因爲它很有趣。但我不會告訴你我是如何調用我的AssetManager的。 hehehe ... XP – 2013-01-18 19:21:11

0

onCreateView()方法,你應該分配所有的意見以後需要訪問到你的片段類的字段,像這樣,

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    view = inflater.inflate(R.layout.xxx, container, false); 

    this.aTextView = (TextView)view.findViewById(R.id.a_text_view); 
    this.anImageView = (ImageView)view.findViewById(R.id.an_image_view); 
    ... 
} 

你可以th在執行片段的其他地方使用aTextView等。