在扩充XML文件之后,不会调用onCreate()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在扩充XML文件之后,不会调用onCreate()相关的知识,希望对你有一定的参考价值。

我是android开发的新手,使用滑动视图创建项目有3个视图使用片段。在这个类中,我使用inflater来实例化3个视图。我试图从他们相应的活动文件编辑视图(有点像视图控制器如何在ios上工作),但我没有运气。我想知道是否有人可以指导我如何从每个相应的java文件控制我在PageFragment中生成的视图。

片段Java代码::

public class PageFragment extends Fragment {
TextView textView;
private int pageCounter;


public PageFragment(Integer pageCount){
    this.pageCounter = pageCount;
}
public PageFragment(){

}

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
   if(pageCounter == 1){
       View view = inflater.inflate(R.layout.activity_page1,container,false);

       pageCounter++;
       return view;
   }else if(pageCounter == 2){
       View view = inflater.inflate(R.layout.activity_page2,container,false);
       Bundle bundle = getArguments();
       pageCounter++;
       return view;
   }else if(pageCounter == 3){
       View view = inflater.inflate(R.layout.activity_page3,container,false);

       pageCounter++;
       return view;
   }

    //this should never run

    View view = inflater.inflate(R.layout.page_fragment_layout,container,false);
    return view;
}
}

TextView的XML我试图更改文本:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/holo_blue_bright"
    tools:context="com.example.aryamirshafii.resumewriterexcelandroidversion.page3">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="168dp"
        android:text="you are on page 3" />

</android.support.constraint.ConstraintLayout>

我正在尝试更改XML活动的Java文件

public class page1 extends AppCompatActivity {


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

    final dataManager myDataManager = new dataManager();
    setContentView(R.layout.activity_page1);
    TextView textView = (TextView) findViewById(R.id.textView1);

    final Context context = textView.getContext();
    textView.setText("Hello World");


}


}

The ScreenShot

简而言之,我希望textView上写着“你在第1页”,而不是从page1.java类中说出“Hello World”。任何朝着实现这一目标的正确方向提供的援助将不胜感激。

答案

你的片段和活动都加载R.layout.activity_page1

您的活动需要加载包含ViewPager的其他XML。

并且PageFragment不应该加载3种不同的布局。你可以使用每个3个片段中的一个布局,例如,使用if-else阻止FragmentPagerAdapterreturn new Page1Fragment()类,然后从活动中使用viewPager.setAdapter()

你也可以使用其中一个Android Studio Activity templates to give you a Tabbed Activity Layout

以上是关于在扩充XML文件之后,不会调用onCreate()的主要内容,如果未能解决你的问题,请参考以下文章

在 onActivityResult 之前和之后调用 onCreate

在 ACTION_GET_CONTENT 意图之后有时不会调用 OnActivityResult

如何在onCreate方法中获取视图的宽度和高度

Android - 将用户发送到 Activity 的 GCM 推送通知不会导致 onCreate 调用

从 xml 文件中扩充视图是啥意思?

在 onCreate 方法中获取 activityInfo 元数据