小编mat*_*ash的帖子

Android L中不推荐使用操作栏导航模式

纵观在为Android"L"预览API diff报告,我看到与在导航模式的所有方法ActionBar类(如setNavigationMode(),addTab(),selectTab(),&C).现已弃用.

文档说明:

不推荐使用操作栏导航模式,内联工具栏操作栏不支持.请考虑使用其他常见的导航模式.

什么是假设的替代品?

另外,"内联工具栏操作栏"是一个新概念吗?我不认为我以前听说过.

android android-actionbar android-navigation android-5.0-lollipop

201
推荐指数
3
解决办法
12万
查看次数

来自Fragment ActionBarCompat内部的getSupportActionBar

我正在开始一个使用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

94
推荐指数
6
解决办法
8万
查看次数

如何导入RecyclerView for Android L-preview

尝试使用支持库中的新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 gradle android-5.0-lollipop android-recyclerview

87
推荐指数
4
解决办法
20万
查看次数

Android Studio的"预期资源类型"检查?

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()任意整数,它不会抱怨.

所以,我有两个(相关的)问题:

  1. 这是如何实现的 - 将特殊检查"烘焙"成棉绒?
  2. 是否有任何方法可以注释该mySetContentView()方法,以便在使用无效值调用它时也会报告资源类型错误?

android lint typechecking android-studio

29
推荐指数
3
解决办法
3万
查看次数

Android Material设计转换

我想复制转换,如Google的Material design中所述.这是预览链接,但基本上我关心的视频是这两个:

  1. http://material-design.storage.googleapis.com/videos/animations-meaningfultransitions-hierarchical_transitions_topLevel_large_xhdpi.webm
  2. http://material-design.storage.googleapis.com/videos/animation-meaningfultransitions-view_contact_large_xhdpi.webm

我的问题是UI的容器是什么?这是一个新的活动,onCreate有每个元素的动画或它是一个片段?

特别是在第二个例子中,第一个Activity上有一些移动因此在onClick内部是否有动画也会创建第二个活动?(请注意,点击的名称也会移动,因此这不应该是新活动)

换句话说,如果我想要复制它,布局(+活动,片段)应该是什么?

android android-fragments material-design

29
推荐指数
2
解决办法
2万
查看次数

Android系统在Lollipop中出现故障

这个错误发生在我的Nexus 5和运行Lollipop的 Nexus 7上.

编辑

当我进入收件箱>设置>通知>任何项目并返回时,Google的新收件箱应用中也会出现此错误...

/编辑

  • compileSdkVersion 21
  • buildToolsVersion 21.1.1
  • 编译'com.android.support:appcompat-v7:21.0.2'

我有一个GalleryActivity显示多个图像,每页一次(在a ViewPager.当我点击后退按钮时,有时Android的SystemUI有毛刺.

普通视图

正常

Glitched视图

glitched

看看这些观点如何重复,并在系统内部重演?

简单的触摸事件会恢复正常的SystemUI视图.

到底是怎么回事?

可能类似于:

android android-5.0-lollipop

20
推荐指数
1
解决办法
4716
查看次数

尝试使用jarsigner.exe手动签署android包,并使用adb.exe安装

我一直在尝试使用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代码有任何问题,我会很感激.

android jar-signing apk

19
推荐指数
2
解决办法
2万
查看次数

从App主继承AppCompat 22.1.1对话框colorAccent不起作用

我正在尝试设置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

16
推荐指数
1
解决办法
4263
查看次数

使用PutDataMapRequest后,Wearable.DataApi.getDataItem()的Uri是什么?

我正在测试可穿戴数据层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...

或者我做错了什么?

android android-wear-data-api wear-os

15
推荐指数
1
解决办法
4747
查看次数

分享Google+的意图无法访问图片

我打算分享图像的意图.这适用于大多数提供商,但适用于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 image android-intent google-plus android-sharing

14
推荐指数
1
解决办法
2660
查看次数