我刚刚看了一下Master/Detail Flow模板,我无法弄清楚2件事情.
1)当它生成的代码似乎使用Fragment兼容性支持时,为什么它需要Android版本11?特别是,为什么你不能生成运行Android版本8的模板?(例如此导入)
import android.support.v4.app.FragmentActivity;
Run Code Online (Sandbox Code Playgroud)
2)如果活动足够大,主活动如何知道是否在新活动或详细信息窗格中显示详细信息?它似乎是通过这段代码来做到的:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_list);
if (findViewById(R.id.item_detail_container) != null) {
mTwoPane = true;
((ItemListFragment) getSupportFragmentManager()
.findFragmentById(R.id.item_list))
.setActivateOnItemClick(true);
}
}
Run Code Online (Sandbox Code Playgroud)
setContentView(R.layout.activity_item_list);将布局设置为ListFragment只设置自己的适配器,但我看不出如何findViewById(R.id.item_detail_container) != null返回true,因为它似乎永远不会被打开/膨胀.
有线索吗?
Mik*_*e T 14
经过深思熟虑,答案就是因为这个 values-large/refs.xml
<resources>
<item type="layout" name="activity_item_list">@layout/activity_item_twopane</item>
</resources>
Run Code Online (Sandbox Code Playgroud)
它将正常布局的请求重定向到定义的更大布局(双窗格版本)R.id.item_detail_container.
这很混乱.我不确定为什么他们不只是将大型布局称为与普通布局相同,而是使用不同的xml.
小智 13
这对我有用.
1)将ActionBarSherlock添加到项目中:Project - > Properties - > Android - >选择ActionBarSherlock并按"Add"按钮.如果您没有ABS,那么您需要在继续之前从http://actionbarsherlock.com/获取它.
2)"AndroidManifest.xml":将minSdkVersion设置为10(Gingerbread).我认为你可以更低.
android:minSdkVersion="10"
Run Code Online (Sandbox Code Playgroud)
3)"activity_item_list.xml":只需删除"list_content",因为Eclipse一直抱怨你需要Honeycomb或更高版本.
tools:layout="@android:layout/list_content" <-- remove
Run Code Online (Sandbox Code Playgroud)
4)"activity_item_twopane.xml":删除Honeycomb-or-later行.
android:divider="?android:attr/dividerHorizontal" <-- remove
tools:layout="@android:layout/list_content" <-- remove
Run Code Online (Sandbox Code Playgroud)
5)ItemListActivity.java:使用SherlockFragmentActivity.
//public class ItemListActivity extends FragmentActivity implements
public class ItemListActivity extends SherlockFragmentActivity implements
Run Code Online (Sandbox Code Playgroud)
6)ItemListFragment.java:将参数修改为setListAdapter().
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: replace with a real list adapter.
//setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
// android.R.layout.simple_list_item_activated_1,
// android.R.id.text1, DummyContent.ITEMS));
int layout = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) ?
android.R.layout.simple_list_item_activated_1 :
android.R.layout.simple_list_item_checked;
setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
layout, DummyContent.ITEMS));
}
Run Code Online (Sandbox Code Playgroud)
7)"ItemDetailActivity.java":使用SherlockFragmentActivity和getSupportActionBar().
//public class ItemDetailActivity extends FragmentActivity {
public class ItemDetailActivity extends SherlockFragmentActivity {
...
//getActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
在进行更改后,该应用程序在Gingerbread,ICS和Jelly Bean中运行.
__ sol
| 归档时间: |
|
| 查看次数: |
12980 次 |
| 最近记录: |