したがって、ビューページャーと3つのフラグメントを含むアクティビティ(Aと呼びます)があり、これらのフラグメントの1つ(フラグメントAと呼びます)がリストをロードします。このリストのonclickitemリストは、アクティビティ(A)へのコールバックをトリガーするため、新しいフラグメント(Bも)を使用して新しいアクティビティ(Bと呼びます)を起動します。
インターフェイスとonclickItemListener()を含むリスト付きのFragment(A):
// Container Activity must implement this interface
public interface onProcessSelectedListener{
public void onMyProcessSelected(MyProcessDTO process);
}
actualListView.setOnItemClickListener(
new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
IpdmsMobileMenuItemListDTO dto=(IpdmsMobileMenuItemListDTO) parent.getItemAtPosition(position);
if(getView().findViewById(R.id.myprocessdetail)!=null)
updateProcess((MyProcessDTO) dto.getDto());
else{
mListener.onMyProcessSelected((MyProcessDTO) dto.getDto());
}
}
});
レイアウトに特定のビューが表示されない場合は、次のフラグメントを含むビューページャーを格納するActivity(A)でコールバックメソッドを起動します。
@Override
public void onMyProcessSelected(MyProcessDTO process) {
Intent showContent = new Intent(getApplicationContext(),MyProcessDetail.class);
showContent.putExtra("Process", process);
startActivity(showContent);
}
これは新しいアクティビティ(B)を呼び出します:
@Override
public void onCreate() {
this.setTheme(getThemeId());
super.onCreate(bundle);
//get extras from bundle
extras = getIntent().getExtras();
//requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(getLayoutId());
MyProcessDTO process= (MyProcessDTO) extras.get("Process");
//get fragment
MyProcessDetailsFragment contentProcess= (MyProcessDetailsFragment) getSupportFragmentManager()
.findFragmentById(R.id.view_fragment);
contentProcess.updateProcess(process);
}
Activity(B)にロードされたレイアウトには、Fragment(B)クラスを指すfragmentタグが含まれています。Activity(B)はfragment(B)メソッドupdateProcess()を呼び出します。
public void updateProcess(MyProcessDTO process){
nrProcTV.setText(process.getNrprocesso());
tipoTV.setText(process.getVariante());
}
しかし、これらのテキストビューは何らかの理由でnullです。それらはfragment(B)のonActivityCreatedメソッドで初期化されます。
@Override
public void initializeFragment(Bundle savedInstanceState) {
super.initializeFragment(savedInstanceState);
nrProcTV= (TextView) getView().findViewById(R.id.nrprocesso_value);
tipoTV= (TextView) getView().findViewById(R.id.tipoprocesso_value);
}
updateProcessメソッドを呼び出す前にメソッドonActivityCreatedが実行されなかったのはなぜですか?
よろしく、
。