纵观在为Android"L"预览API diff报告,我看到与在导航模式的所有方法ActionBar类(如setNavigationMode(),addTab(),selectTab(),&C).现已弃用.
文档说明:
不推荐使用操作栏导航模式,内联工具栏操作栏不支持.请考虑使用其他常见的导航模式.
什么是假设的替代品?
另外,"内联工具栏操作栏"是一个新概念吗?我不认为我以前听说过.
android android-actionbar android-navigation android-5.0-lollipop
我正在开始一个使用AppCompat/ActionBarCompatin v7支持库的新项目.我试图找出如何getSupportActionBar在片段中使用from.我承载片段的活动扩展了ActionBarActivity,但我没有看到片段的类似支持类.
从我的片段中
public class CrimeFragment extends Fragment {
//...
getActivity().getSupportActionBar().setSubtitle(R.string.subtitle); // getSupportActionBar is not defined in the v4 version of Fragment
//...
}
Run Code Online (Sandbox Code Playgroud)
使用它的谷歌页面(http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html)表示v4片段应该没有变化.我是否需要将所有getActivity()电话投入ActionBarActivity?这似乎是糟糕的设计.
android android-fragments android-support-library android-actionbar-compat
尝试使用支持库中的新RecyclerView.我使用SDK管理器下载了支持库的20更新.
我已经将jar文件添加到libs文件夹中 - 并添加到构建路径 - 使用RecyclerView没有运气.
根据Android Developer的API尝试使用gradle依赖- 不确定这是否适合查看 - 此页面更多与AndroidTV相关:
com.android.support:recyclerview-v7:20.0.+
Run Code Online (Sandbox Code Playgroud)
无法同步项目.
有任何想法吗?
Android Studio Beta(0.8)有一个漂亮的新功能,它检查某些int参数不是任意整数,而是具有一些属性.
例如,调用类似于:
setContentView(R.id.textView1);
Run Code Online (Sandbox Code Playgroud)
将正确报告R.id.textView1不是布局ID(消息是"类型布局的预期资源").还有其他案例.
可以理解的是,只要您将自己的方法添加到组合中,这种保护就会丢失,例如
private void mySetContentView(int resourceId) {
setContentView(resourceId);
}
Run Code Online (Sandbox Code Playgroud)
然后我可以调用mySetContentView()任意整数,它不会抱怨.
所以,我有两个(相关的)问题:
mySetContentView()方法,以便在使用无效值调用它时也会报告资源类型错误?我想复制转换,如Google的Material design中所述.这是预览的链接,但基本上我关心的视频是这两个:
我的问题是UI的容器是什么?这是一个新的活动,onCreate有每个元素的动画或它是一个片段?
特别是在第二个例子中,第一个Activity上有一些移动因此在onClick内部是否有动画也会创建第二个活动?(请注意,点击的名称也会移动,因此这不应该是新活动)
换句话说,如果我想要复制它,布局(+活动,片段)应该是什么?
这个错误只发生在我的Nexus 5和运行Lollipop的 Nexus 7上.
编辑
当我进入收件箱>设置>通知>任何项目并返回时,Google的新收件箱应用中也会出现此错误...
/编辑
我有一个GalleryActivity显示多个图像,每页一次(在a ViewPager.当我点击后退按钮时,有时Android的SystemUI有毛刺.
普通视图

Glitched视图

看看这些观点如何重复,并在系统内部重演?
简单的触摸事件会恢复正常的SystemUI视图.
到底是怎么回事?
可能类似于:
我一直在尝试使用jarsigner.exe和adb.exe手动签署一个android包并将其安装在API V8模拟器上.我创建了一个简单的HelloAndroid项目,它将使用位于用户的.android目录中的debug.keystore生成一个签名的HelloAndroid.apk.从Eclipse启动时,它在模拟器上构建并安装apk而没有任何问题.
我使用android工具将未签名的应用程序包导出到单独的目录中.我签名并zipAligned包并使用adb安装它但收到错误:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Run Code Online (Sandbox Code Playgroud)
我使用以下命令对其进行签名.
jarsigner -verbose -keystore c:\users\jhwong\.android\debug.keystore
-storepass android -keypass android -digestalg SHA-1 -sigalg SHA1withRSA
-sigfile CERT -signedjar temp\HelloWorld2.apk
temp\HelloWorld.unsigned.apk androiddebugkey
adding: META-INF/MANIFEST.MF
adding: META-INF/CERT.SF
adding: META-INF/CERT.RSA
signing: res/layout/main.xml
signing: AndroidManifest.xml
signing: resources.arsc
signing: res/drawable-hdpi/icon.png
signing: res/drawable-ldpi/icon.png
signing: res/drawable-mdpi/icon.png
signing: classes.dex
Run Code Online (Sandbox Code Playgroud)
这没有给我任何错误,只是为了确保我跑:
jarsigner -verify -verbose temp\HelloWorld2.apk
Run Code Online (Sandbox Code Playgroud)
它显示jar已经过验证,每个文件都已签名并且是清单的一部分.
我跑完zipalign -v 4 temp\HelloWorld2.apk temp\HelloWorld3.apk了没有错误.然后使用adb install -r temp\HelloWorld3.apk.
我已经看到几个相关的线程和文章提出了这些方向,但我很困惑为什么它不能手动使用Eclipse来构建签名包.我甚至采用了从Eclipse构建的软件包,并且能够使用adb.exe来安装它,所以我缩小了它以签署软件包.我已经尝试过使用keytool生成的密钥库,但是它们运行不正常,这就是我尝试使用debug.keystore的原因.
如果他们发现我的jarsigner代码有任何问题,我会很感激.
我正在尝试设置AppCompat的对话框,以便按钮使用与应用程序的强调颜色相同的颜色,而不重复颜色本身.通过在values-v21以下位置使用此样式文件,这与AppCompat v22(仅适用于Lollipop)完美配合:
<style name="AppTheme" parent="@style/Theme.AppCompat">
<item name="colorAccent">#FF9800</item>
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialogTheme" parent="android:Theme.Material.Dialog.Alert">
<item name="android:colorAccent">?attr/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
当AppCompat v22.1发布时,我试图为所有Android版本设置它,所以我将这些样式移动到基本values文件夹,并基本上用android:它们的AppCompat对应物替换了所有和v21特定的属性.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorAccent">#FF9800</item>
<item name="alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert">
<item name="colorAccent">?attr/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用 - 应用程序在尝试显示警报对话框时崩溃.在logcat中有一些警告,我强烈怀疑它与问题有关:
05-08 16:55:44.863 W/ResourceType? Too many attribute references, stopped at: 0x7f01009e
Run Code Online (Sandbox Code Playgroud)
例外是:
05-08 16:55:44.900 21301-21301/com.example.test.testaccentcolor E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.example.test.testaccentcolor, PID: 21301
android.view.InflateException: Binary XML file line #124: Error inflating class Button
at …Run Code Online (Sandbox Code Playgroud) android android-appcompat android-support-library android-styles
我正在测试可穿戴数据层Api,如Android教程中所述.
有一个低级API DataItem,它只能有一个字节数组作为有效负载,因此训练建议使用PutDataMapRequest,这似乎基本上等于Bundle使用Intents时的(即可序列化的映射).您基本上创建了此类的实例,然后填充值并发送它.
private final static String DATA_PATH = "/testdata";
PutDataMapRequest dataMap = PutDataMapRequest.create(DATA_PATH);
dataMap.getDataMap().putInt(...);
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, request);
pendingResult.setResultCallback(...);
Run Code Online (Sandbox Code Playgroud)
现在,我想检查这些数据是否存储正确(对于测试,在掌上电脑本身,我现在不关心可穿戴设备).适当的方法是在DataApi课堂上,所以我可以打电话:
PendingResult<DataApi.DataItemResult> pending;
pending = Wearable.DataApi.getDataItem(mGoogleApiClient, uri);
pending.setResultCallback(...);
Run Code Online (Sandbox Code Playgroud)
然后DataMapItem.fromDataItem()在回调内部使用以获取值.
问题是:请求DataItemResult的实际Uri是什么?
存储数据,因为如果我使用Wearable.DataApi.getDataItems(mGoogleApiClient)迭代所有存储的数据,它确实存在,并且Uri是:
"wear://<some guid here>/testdata"
Run Code Online (Sandbox Code Playgroud)
并使用此Uri DataApi.getDataItem()返回正确的结果.但我对如何生成它一无所知,因为我只使用该/testdata部件来创建PutDataRequest...
或者我做错了什么?
我打算分享图像的意图.这适用于大多数提供商,但适用于Google+.Google+会在没有图片的情况下打开帖子活动并显示祝词"您只能发布存储在设备上的照片".同时.
File f = storeImage(image); // f = /data/data/com.myapp/files/1333070776978.jpg
Uri uri = Uri.fromFile(f);
Intent share = new Intent(Intent.ACTION_SEND);
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
share.setType("image/jpeg");
share.putExtra(Intent.EXTRA_STREAM, uri);
share.putExtra(Intent.EXTRA_TITLE,"Share that title");
share.putExtra(Intent.EXTRA_SUBJECT,"Share that subject");
share.putExtra(Intent.EXTRA_TEXT,"Check that out...");
share.putExtra("sms_body", "sms body");
startActivity(Intent.createChooser(share, "Share Image"));
Run Code Online (Sandbox Code Playgroud)
我保存图像
Context.openFileOutput(fileName, Context.MODE_WORLD_READABLE);
Run Code Online (Sandbox Code Playgroud)
我的理解是,通过设置FLAG_GRANT_READ_URI_PERMISSION,我授予Google+特定访问权限.
当我将图像存储到MediaStore时它可以工作,但我实际上不想弄乱用户图像库.
ContentValues values = new ContentValues(2);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.Images.Media.DATA, f.getAbsolutePath());
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏
西蒙
android ×10
apk ×1
google-plus ×1
gradle ×1
image ×1
jar-signing ×1
lint ×1
typechecking ×1
wear-os ×1