Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用片段回调到另一个活动,结果在片段视图处出现空指针_Android_Callback_Android Fragments - Fatal编程技术网

Android 使用片段回调到另一个活动,结果在片段视图处出现空指针

Android 使用片段回调到另一个活动,结果在片段视图处出现空指针,android,callback,android-fragments,Android,Callback,Android Fragments,所以我有一个活动(我们称之为A)和一个视图寻呼机和3个片段,其中一个片段(我们称之为片段A)加载一个列表。此列表的onclickitem列表将触发对活动(a)的回调,因此它将启动一个新活动(我们也将其称为B),并使用一个新片段(B): 带有列表的片段(A),包含接口和onclickItemListener(): 这将称为新活动(B): 在Activity(B)中加载的布局包含指向fragment(B)类的fragment标记 活动(B)调用片段(B)方法updateProcess(): publ

所以我有一个活动(我们称之为A)和一个视图寻呼机和3个片段,其中一个片段(我们称之为片段A)加载一个列表。此列表的onclickitem列表将触发对活动(a)的回调,因此它将启动一个新活动(我们也将其称为B),并使用一个新片段(B):

带有列表的片段(A),包含接口和onclickItemListener():

这将称为新活动(B):

在Activity(B)中加载的布局包含指向fragment(B)类的fragment标记 活动(B)调用片段(B)方法updateProcess():

public void updateProcess(MyProcessDTO进程){

但由于某些原因,这些文本视图为空。它们是在片段(B)的onActivityCreated方法上初始化的:

为什么在调用updateProcess方法之前没有执行onActivityCreated方法

问候,


.

文本视图为空,因为您在片段通过onViewCreated()之前访问它们。您可以通过让活动在片段中设置一个字段来解决问题,并让片段在其onViewCreated方法中使用该字段来查看.setText。

如果是这样,则getView().findViewById不起作用,它确实起作用。当我从Activity onCreate调用fragment方法时,onActivityCreated方法似乎没有最终确定???
// 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());
                        }
                    }
                });
@Override
public void onMyProcessSelected(MyProcessDTO process) {

    Intent showContent = new Intent(getApplicationContext(),MyProcessDetail.class);
    showContent.putExtra("Process", process);
    startActivity(showContent);
}
@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);
}
    nrProcTV.setText(process.getNrprocesso());
    tipoTV.setText(process.getVariante());
}
@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);

}