2

如果 OnCreateView 仅适用于片段,那么 Activity 会是什么?
我尝试了 OnCreate() 但无法使其工作

在第一个覆盖中我遇到了问题,在最后一个覆盖中它也给了我一个 OncreateView 错误。
我已阅读有关 OnCreate() 和 OnCreateView() 的信息,但找不到答案。

private VrPanoramaView panoWidgetView;
private ImageLoaderTask backgroundImageLoaderTask;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =  inflater.inflate(R.layout.activity_pruebafoto, container,false);
    panoWidgetView = v.findViewById(R.id.pano_view);
    return v;
}

@Override
public void onPause() {
    panoWidgetView.pauseRendering();
    super.onPause();
}

@Override
public void onResume() {
    panoWidgetView.resumeRendering();
    super.onResume();
}

@Override
public void onDestroy() {
    // Destroy the widget and free memory.
    panoWidgetView.shutdown();
    super.onDestroy();
}

private synchronized void loadPanoImage() {
    ImageLoaderTask task = backgroundImageLoaderTask;
    if (task != null && !task.isCancelled()) {
        // Cancel any task from a previous loading.
        task.cancel(true);
    }

    // pass in the name of the image to load from assets.
    VrPanoramaView.Options viewOptions = new VrPanoramaView.Options();
    viewOptions.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;

    // use the name of the image in the assets/ directory.
    String panoImageName = "@drawable/iglesiavr.jpg";

    // create the task passing the widget view and call execute to start.
    task = new ImageLoaderTask(panoWidgetView, viewOptions, panoImageName);
    task.execute(this.getAssets());
    backgroundImageLoaderTask = task;
}

@Override
public void onCreateView(@Nullable Bundle savedInstanceState) {
    super.onCreateView(savedInstanceState);
    loadPanoImage();
}
4

4 回答 4

1

onCreateView()如果它是您可以使用onCreate()方法的活动,则仅在片段上调用它。有关更多详细信息,请参阅此生命周期流程图。

https://github.com/xxv/android-lifecycle

https://github.com/xxv/android-lifecycle

于 2018-01-05T06:11:08.160 回答
1

创建():

您可以onCreate()在 Fragment 内部使用,它在 Activity 之后onAttachFragment()但在 Fragment 之前调用onCreateView()。在此方法中,您可以分配变量、获取 Intent extra 以及任何其他不涉及 View 层次结构的内容。但是,您不能onCreateView()在 Activity 中使用。

onCreateView():

您可以分配视图变量并进行任何图形初始化。您应该从此方法返回一个根视图,这是主视图,但如果您的 Fragment 不使用任何布局或图形,则可以返回 null。

于 2018-01-05T06:42:25.660 回答
0

对于一个活动,我们有 您需要以下内容:onCreate

public class MainActivity extends Activity {  

    private VrPanoramaView panoWidgetView

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_pruebafoto);  
        Log.i("lifecycle","onCreate invoked"); 
        panoWidgetView = (VrPanoramaView ) findViewById(R.id.pano_view);
        loadPanoImage(); 
    }  
于 2018-01-05T05:52:03.140 回答
0

仅限活动使用onCreate。片段两者兼而有之。

onCreate使用setContentView,而不是充气机,或super.onCreateView

您使用此代码的错误是您定义onCreateView 了两次,而第二个(在底部)没有覆盖任何内容。它需要返回一个视图,但你有它void。看起来您试图定义onCreate,但将其保留为onCreateView

删除第二个,移动loadPanoImage()到第一个,然后返回。

于 2018-01-05T05:56:31.513 回答