私のアプリケーションはフラグメントに分割されており、それぞれに独自のレイアウト(.xmlファイル)があります。
onCreate()
アクティビティのメソッドの最初のフラグメントの視覚化を開始するときに、を使用して適切なレイアウトを設定しますsetContentView(fragment_first)
。TextView
たとえば、 2番目のフラグメント(fragment_second)内に含まれているものを変更するにはどうすればよいですか?
一般的に言えば、、、Fragment
またはそのいずれActivity
か、またはView
そのことについては、独自の内部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;
}
メソッドでは、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);
...
}
aTextView
その後、フラグメントの実行の他の場所でなどを使用できます。
アクティビティの最初のフラグメント用に意図した xml ファイルを設定したようです。つまり、完全に新しいクラスを作成して拡張しandroid.support.v4.app.Fragment
、Activity だけでなく FragmentActivity をアクティビティに拡張させる必要があります。
次に、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またはその他のビデオやチュートリアルをご覧ください。
EDIT:これは基本的なフラグメントクラスです:
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();
}
}