Android入门教程,为什么要使用片段?

时间:2015-04-04 19:59:14

标签: android

我正在关注this教程以开始使用android。

在教程中,他们要求您添加以下代码:

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() { }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          View rootView = inflater.inflate(R.layout.fragment_display_message,
                  container, false);
          return rootView;
    }

但是这个创建的类看起来好像从未使用过,如果我删除代码,代码似乎工作正常。为什么我需要添加此代码? 他们说你在onCreate中需要它的两个人已经吸了一口气:教程给出了以下内容:

The complete onCreate() method for DisplayMessageActivity now looks like this:
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 // Get the message from the intent
 Intent intent = getIntent();
 String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

 // Create the text view
 TextView textView = new TextView(this);
 textView.setTextSize(40);
 textView.setText(message);

 // Set the text view as the activity layout
 setContentView(textView);
}

在教程之后不再调用它,在删除之前你不能编译代码。

2 个答案:

答案 0 :(得分:0)

  

但是这个创建的类似乎从未使用过

是的,它是在活动的onCreate()方法中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment()).commit();
    }
}

您会在PlaceholderFragment区块内的add()来电中注意到if

  

如果我删除代码,代码似乎工作正常

然后你有一个不同的onCreate()方法,或者你从其他地方得到PlaceholderFragment

答案 1 :(得分:0)

您需要此代码,因为在本教程中,第二个活动有一个片段。因此,活动的内容由片段的内容决定。你在这段代码中看不到它:

if (savedInstanceState == null) {
    getSupportFragmentManager().beginTransaction()
        .add(R.id.container, new PlaceholderFragment()).commit();
}

片段的内容由fragment_display_message.xml的内容决定。这就是你发布的代码(调用fragment_display_message.xml):

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() { }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                  Bundle savedInstanceState) {
              View rootView = inflater.inflate(R.layout.fragment_display_message,
                      container, false);
              return rootView;
        }
    }
}