Articles of android 3.0 honeycomb

两个面板UI与片段vs独立的活动

我正在启动一个Honeycomb应用程序,该应用程序将具有基本的两个面板布局,左侧为面板菜单,右侧为每个部分的主要function。 与Fragments API的可用样本相反,右侧面板上显示的内容包含针对每个菜单选项的完全不同的UI。 根据所select的部分来replace正确的片段是诱人的,但是这意味着在整个应用中只使用一个活动,这听起来不太好。 此外,片段的生命周期与活动相关联,因此在活动被杀死之前不会有片段被杀死,导致大量片段“活着”。 然而,每个菜单选项有两个面板的不同活动意味着用于菜单的片段将不得不在每个活动中添加,并且将在所有应该有菜单的部分中受到不一致布局的影响。 这里最好的做法是什么?

使用startActivity()设置主题/样式

简单的问题: 我在我的Android 3.0应用程序中使用PICK_CONTACT 。 问题是,联系应用程序有一个轻的主题,而我的应用程序使用一个黑暗的。 所以问题是: 有没有一种方法来设置使用startActivity()时的风格/主题? 如果我正在创build自己的库,并且希望用户能够使用自定义样式,那么我需要收到一些intent ? 有没有更好的方法来解决这个问题?

用碎片重现Honeycomb GMail UI

我试图用碎片重现Honeycomb GMail UI,但不能。 这是我想要的 初始状态: +——–+—————+ | | | |Accounts| Folders | | | | +——–+—————+ select文件夹后: +——–+—————+ | | | |Folders | Items | | | | +——–+—————+ 帐户,文件夹和项目是碎片。 (显然后退button应该进入初始状态) 我尝试了以下布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:id="@+id/root"> <FrameLayout android:id="@+id/left_pane" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" /> <FrameLayout android:id="@+id/right_pane" android:layout_weight="1.6" android:layout_width="0px" android:layout_height="match_parent" /> </LinearLayout> 不幸的是,这不起作用,因为我无法将我的文件夹片段从右窗格移动到左窗格(片段只能添加一次)。 我可以创build新的文件夹,但是这是相当浪费资源,需要仔细的状态pipe理(尤其是当后退button被按下时),看起来并不像我想要的样子。 我尝试使用3 FrameLayouts(左,中,右与权重1,1.6,2.56),但我不能让FrameLayout崩溃,当片段不显示。 […]

在Mac上使用ADT Plugin v9和Eclipse时,Android首选项会冻结?

我刚刚安装了Eclipse 3.6.1,并在Mac OS X 10.6.6上添加了ADT Plugin v9。 当我去偏好添加path到Android SDK,我得到一个popup“感谢您使用Android SDK!” 带有用于启用使用统计信息的checkbox。 在这一点上,Eclipse冻结了,我既不能继续也不能取消。 我必须强制退出Eclipse,重新启动时,每次都会出现同样的问题。 任何想法如何避免或绕过这个? 我想popup窗口只会显示,直到一些configuration值已被设置为first_launch = false或类似。

Android AppWidget不会显示在蜂巢的菜单中,直到重新启动

我创build了一个适用于Honeycomb的AppWidget,它运行良好,除了首次安装时,它不会显示在Widgets菜单中,因此无法添加到主屏幕。 重新启动设备将允许它显示,或在开发过程中,从Eclipse发送两次将导致它显示。 有任何想法吗? 谢谢!

Honeycomb ActionBar中的SearchView上的KeyListener不起作用

这是我的代码。 在search框中input时,从不会调用onKey()方法。 我在设置听众方面做错了什么? 我在onKey()方法中有一个断点,这是我知道它不会触发。 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.locations_map_menu, menu); ActionBar ab = getActionBar(); ab.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar)); ab.setDisplayShowTitleEnabled(false); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { return true; // This code never fires } }); return true; }

从首选标题开始活动

我正在实现n层PreferenceActivities第一层PreferenceActivity从首选项标题加载。 第一个头创build一个PreferenceFragment的设置片段。 其次是一个浏览器活动(第二个是来自developer.android.com的例子),它打开指定的Url。 第三个我想成为PreferenceAtivity的下一级,也将从首选项标题加载。 前两个工作正常,但第三是崩溃的应用程序的例外: “android.content.ActivityNotFoundException:找不到处理Intent的行为{act = android.intent.action.VIEW dat = com.mycompany.myapp.ui.MyPreferenceActivity}” 清单文件中声明的MyPreferenceActivity。 在main_headers.xml中可能声明的活动是错误的,但我没有在参考资料中find任何提示如何正确执行。 尝试了几个变化,他们没有工作。 我使用的示例: http : //developer.android.com/reference/android/preference/PreferenceActivity.html 任何想法为什么它不适合我或如何下一个PreferenceActivity可以被称为? 基本上我只需要从头开始一个活动,这应该很简单,但我错过了一些东西。 public class MySettings extends PreferenceActivity { @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.main_headers, target); } } main_headers.xml: <?xml version="1.0" encoding="utf-8"?> <preference-headers xmlns:android="http://schemas.android.com/apk/res/android" > <header android:title="Custom Settings" android:fragment="com.mycompany.myapp.ui.SettingsFragment" /> <header android:title="Intent" android:summary="Launches an Intent."> <intent android:action="android.intent.action.VIEW" […]

在Android 3.0+中使用android.app.Fragment和ViewPager

我正在开发android的应用程序:minSdkVersion =“11”。 据我所知,ViewPager是在兼容库中实现的。 我已经成功通过添加android-support-v4.jar库使其在我的应用程序中工作,但现在我不得不使用 android.support.v4.app.FragmentActivity 因为我需要getSupportFragmentManager()为FragmentPagerAdapter,而不是新的android.app.Activity的getFragmentManager()。 另外我需要使用 android.support.v4.app.Fragment 代替 android.app.Fragment 它虽然工作,但我绝对不喜欢这种方法。 它破坏了应用程序的devise,我不想在我的API Level 11项目中有兼容性库。 在Honeycomb +应用程序中是否还有其他更多本地方式使用ViewPager?

Honeycomb中的片段加载微调器/对话框

当将数据加载到我的碎片时,我希望在碎片中间有一个不确定的微调(例如,下图),以向用户显示在该特定窗格中正在加载内容。 Honeycomb中最好的方法是什么? 我真的不想在操作栏中使用微调,在加载数据的位置并不明显。 此外,我不想要一个不确定的进度对话框,因为它出现在整个应用程序的中心,也阻止用户做任何事情,直到它被解雇。 NB FragmentDialogs似乎也这样做。 我将不得不使用自定义的FrameLayout来获得每个窗格所需的效果吗?

Android GridView点击未被检测到

我有以下的GridView LinearLayout : <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridView android:id="@+id/songs_grid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:columnWidth="250dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" /> </LinearLayout> GridView数据由一个自定义适配器提供(使用一个简单的ViewHolder ): public class SongsAdapter extends BaseAdapter { private Context context; private LayoutInflater mInflater; private ArrayList<Song> songList; public SongsAdapter(Context context, ArrayList<Song> songList) { this.context = context; this.songList = songList; mInflater = LayoutInflater.from(this.context); } @Override […]