public class WeatherDetailActivity extends SingleFragmentActivity{ public static final String EXTRA_WEATHER_ITEM = "com.example.weather.weatherItem"; @Override protected Fragment createFragment() { WeatherItem weatherItem = (WeatherItem)getIntent().getSerializableExtra(EXTRA_WEATHER_ITEM); return WeatherDetailFragment.newInstance(weatherItem); } @Override protected int getLayoutId() { return R.layout.activity_detail; } @Override protected int getFragmentId() { return R.id.detail_container; } public static Intent newIntent(Context packageContext, WeatherItem weatherItem){ Intent intent = new Intent(packageContext,WeatherDetailActivity.class); intent.putExtra(EXTRA_WEATHER_ITEM,weatherItem); return intent; } }
时间: 2024-02-23 20:57:41 浏览: 69
这是一个名为 WeatherDetailActivity 的活动类,继承自 SingleFragmentActivity。它用于展示天气详情的碎片(WeatherDetailFragment)。
在 WeatherDetailActivity 中,我们:
1. 定义了一个名为 EXTRA_WEATHER_ITEM 的常量,用于在活动之间传递天气信息。
2. 实现了抽象方法 createFragment,用于创建该活动所需的碎片。在该方法中,我们从 Intent 中获取传递过来的天气信息,并使用 WeatherDetailFragment.newInstance 方法创建一个新的碎片实例。
3. 实现了抽象方法 getLayoutId 和 getFragmentId,分别返回活动的布局和碎片的容器 ID。
4. 定义了一个静态方法 newIntent,用于创建一个新的 Intent 对象,并将传递的天气信息作为额外信息放入 Intent 中。
该活动在启动时会调用 newIntent 方法创建一个 Intent 对象,并通过 startActivity 方法启动。在启动时,需要传递一个 WeatherItem 对象作为 EXTRA_WEATHER_ITEM 额外信息。在 onCreate 方法中,通过 getIntent 方法获取传递过来的 Intent 对象,并从中获取 WeatherItem 对象作为创建碎片的参数。最后,将创建的碎片添加到指定 ID 的容器中。
阅读全文