小编Oll*_*e C的帖子

仅针对我的项目的Android Lint报告,不包括库项目?

如何运行Android Lint以便它只报告我的项目模块,并忽略我正在使用的任何库项目?即使我将Lint瞄准我的项目模块,它也会在库项目中列出我不感兴趣的问题列表 - 我想集中精力修复我自己代码中的问题.

我看不到一个参数来指定它是否跟随对库项目的引用,但也许你可以看到如何做到这一点.

android android-lint

24
推荐指数
2
解决办法
4591
查看次数

从IntentService或AsyncTask进行REST API调用?

想象一下,一个活动打开的典型场景,需要调用REST HTTP API来获取一些内容,并且一旦收到更新UI.显然,API调用需要在单独的线程上进行,但是应该使用AsyncTask,IntentService还是其他方法完成,为什么?

android android-asynctask intentservice

21
推荐指数
1
解决办法
1万
查看次数

"接收广播意图{...}的错误"是什么意思?

我的应用程序包括一个通过广播接收位置的服务,还有一个活动注册这些相同的广播.间歇性地,显然只在某些设备上,活动随之爆发:

class java.lang.RuntimeException
Msg: Error receiving broadcast Intent { act=com.company.app.ACTION_LOCATION_CHANGED flg=0x10 (has extras) } in com.company.app.library.activity.MyActivity$LocationReceiver@40f45bb8
Run Code Online (Sandbox Code Playgroud)

我无法使用调试器来查看应用程序的状态,因为我无法重现此错误,所以我依赖于分析日志.

这个例外究竟意味着什么?即收到它有什么问题?

android

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

AAPT失败,错误代码为-1073741819

构建项目会从AAPT引发以下错误.我重建了这个项目,但它仍然失败了.我找不到任何关于此错误代码实际意味着什么的引用.我在使用ActionBarSherlock v4.1.0的IntelliJ中使用Java 6和Android工具r19.

I/O error: Command
"C:\android-sdk-windows\platform-tools\aapt.exe package -m --auto-add-overlay --extra-packages com.actionbarsherlock -J C:\Users\Ollie\.IntelliJIdea11\system\compiler\project6.b9f5599b\.generated\aapt\Project.9617c193\production -M C:/Users/Ollie/Documents/Dropbox/Tech/project6/Source/project6/AndroidManifest.xml -S C:/Users/Ollie/Documents/Dropbox/Tech/project6/Source/project6/res -S C:/Users/Ollie/Documents/Dropbox/Tech/project6/Source/actionbarsherlock/res -I C:\android-sdk-windows\platforms\android-14\android.jar"
execution failed with exit code -1073741819
Run Code Online (Sandbox Code Playgroud)

在我从项目向ActionBarSherlock库项目添加依赖项之后,此构建失败开始发生.如果我删除该依赖项,项目构建正常.如果我将其添加回来,它会再次失败.

android intellij-idea actionbarsherlock

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

如何在Android中创建两个视图,每个视图使用50%的高度,除非一个更小?

想象一下完整的Android设备屏幕,我希望它分为两部分:

  1. 上半部分有文本,可能比可用空间大(或没有),因此文本将滚动(即ScrollView内的TextView)
  2. 下半部分包含一个MapView控件.

具体看一些场景:

  1. 如果文字很小,我希望地图占用更多空间,即超过50%.所以也许20%的文字,80%的地图.
  2. 如果文本较大,则只占屏幕空间的50%的最大值,然后滚动.所以50%的地图,50%的文字.

目前我已经为这两个部分分配了权重,这也不算太糟糕,但是如果文本很小,地图就不会扩展以占用空间,并且布局有一个浪费的空白,地图可以有用的.

我已经尝试了大量的组合但却看不出如何实现这一点.对我来说似乎是一种常见的经历,我知道自己想要什么,但却无法看到如何获得可用的视图来实现它.我希望有一个很简单的方法来做到这一点.

请随意让我看起来像个傻瓜,并指出我错过的明显属性:-)

================================================== ====================

据我所知,只有在声明性XML中才能做到这一点,它需要在代码中完成.我将文本部分高度设置为wrap_content,权重设置为0(不调整大小),并将地图设置为weight = 1(即占用剩余空间).然后我检查文本部分(在ScrollView中)是否占用了太多空间,如果是,则将其缩小.此代码需要更改以支持不同的布局方向.

private void fixLayoutProportions()
{
    float maxPercentageOfScreenForText = 50/100;
    LinearLayout container = (LinearLayout)findViewById(R.id.container);
    ScrollView eventText = (ScrollView)findViewById(R.id.text_scroller);
    int heightAvailable = container.getHeight();
    int scrollerHeight = eventText.getHeight();
    if ( scrollerHeight>(heightAvailable*maxPercentageOfScreenForText) )      // Text section using too much space
    {
        eventText.getLayoutParams().height = (int)(heightAvailable*maxPercentageOfScreenForText) ;
        eventText.invalidate();
    }
}
Run Code Online (Sandbox Code Playgroud)

height android screen-size

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

从NFC标签启动Android应用/意图?

在配备NFC读卡器硬件的Android设备上,是否有任何内置支持使用NFC标签内容来启动意图(例如启动应用程序)?我问默认是否支持,我知道我可以构建自己的应用程序来监听NFC事件并处理它们.

我见过的所有NFC标签编写应用程序似乎只支持文本/ URL /联系人,并且联系人支持似乎没用,因为许多太大而不适合标记.

android nfc

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

传递给TabListener.onTabSelected()的Null FragmentTransaction

我正在使用此处提供的示例代码向操作栏添加导航标签:http: //developer.android.com/guide/topics/ui/actionbar.html 我正在使用ActionBarSherlock.

我的TabListener直接从文档中复制.

    public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
    private Fragment mFragment;
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;

    /** Constructor used each time a new tab is created.
      * @param activity  The host Activity, used to instantiate the fragment
      * @param tag  The identifier tag for the fragment
      * @param clz  The fragment's Class, used to instantiate the fragment
      */
    public TabListener(Activity activity, String tag, Class<T> clz) { …
Run Code Online (Sandbox Code Playgroud)

android

19
推荐指数
3
解决办法
6742
查看次数

为什么我不应该使用消息总线而不是加载器和服务?

在典型的Android项目中,我们需要以干净的方式将数据从某个地方(REST,SQL,缓存等)提取到UI中,我们通常使用Loader,Service或(可能是yuk)AsyncTask,但我发现所有这些方法由于以下几个原因不满意:

  • 它们很难看,尤其是具有令人震惊的API结构的Loaders
  • 它很容易被包裹在线程中,并踩在UI线程上
  • 我们的表示层代码被Android代码和样板文件污染了.我们经常将Android对象(例如Cursors)传递到UI层,这使得一个干净的架构几乎无法实现.这迫使我们将业务领域特定代码(理想情况下是普通的Java对象)与Android平台代码混合在一起 - 对于未来开发的可读性,维护,测试或灵活性来说并不是很好.在实践中,我们经常会遇到庞大,混乱的Activity/Fragment类.

我被这些文章中概述的想法所吸引:http : //fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ http://antonioleiva.com/mvp-android/ http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

成功开始使用MVP将活动/碎片/视图分解为更小/更清洁的部分,我现在认为上述问题的解决方案可能是依赖于消息总线(Otto,EventBus等)而不是服务或加载器或任何与域数据交互的内容.

所以在实践中这意味着不是使用(例如)CursorLoader从数据库加载Cursor,而是使用消息总线发送消息来请求数据,数据被加载到后台线程以响应该消息,然后通过UI线程上的消息到达时处理响应数据.对我来说至关重要的是,我希望将数据结构从业务领域推出,而不是Android域,所以我更喜欢业务对象数组,而不是Cursor.

这是工程设计,总是需要权衡,虽然这似乎提供了更清晰的关注点分离,但是装载机/服务模板的减少,缺点是什么?

  • 理解代码可能更难(特别是对于新开发人员而言)
  • 有必要确保在正确的线程上发送和接收消息(Otto似乎在这里可能有限制)
  • 有必要避免将一切事物作为一种信息实施的诱惑,这最终会适得其反
  • 传递业务对象集合可能不如使用像Cursors这样的对象.虽然在许多情况下它在实践中是一个问题吗?
  • 我不知道Otto/EventBus是否只是为了传递非常小的消息,或者是否适合传递更大的对象(例如业务对象数组).

我的问题是,是否有任何基本原因不采用这种基于消息的Android应用程序方法?

android android-service android-cursor android-testing android-cursorloader

19
推荐指数
1
解决办法
1782
查看次数

包com.google.android.maps不存在(IntelliJ)

我以前曾经多次使用过Maps API而没有遇到这个问题,但我显然对这个IntelliJ项目做错了.在Settings-> SDKs下,我在类路径中指定了平台7 Google API - 它仍然无法构建,表示Maps API不存在.我也尝试在Google API .jar的类路径中添加单独的引用,但仍然是同样的问题.

如何修复IntelliJ IDE项目以使其正确构建针对Google API?

这是漫长的一天,我可能错过了一些明显的东西.

android intellij-idea

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

如何管理ActionBar导航标签的宽度?

我正在使用ActionBarSherlock并在其中有一个带有导航标签的ActionBar.我希望选项卡根据其中文本的大小自动调整大小,但似乎某个样式或设置强制它们使用最小大小.因此,例如在屏幕截图中,"Very Long Tab"选项卡没有填充(根据我应用的样式)但标记为"T"的选项卡有很多填充,尽管我将填充设置为0dp.

在此输入图像描述

正如你在下面看到的,我通过在几种样式上设置各种属性尝试了一种蛮力的方法,但我还没有成功.

如何控制操作栏选项卡中的填充/宽度?

<style
    name="CustomActivity"
    parent="@style/Theme.Sherlock"
    >
    <item name="actionBarTabStyle">@style/customActionBarTabStyle</item>
    <item name="actionBarTabBarStyle">@style/customActionBarTabBarStyle</item>
    <item name="actionBarTabTextStyle">@style/customActionBarTabTextStyle</item>
</style>

<style name="customActionBarTabStyle" parent="style/Widget.Sherlock.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator</item>
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item>
</style>

<style name="customActionBarTabBarStyle" parent="style/Widget.Sherlock.ActionBar.TabBar">
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item>
</style>

<style name="customActionBarTabTextStyle" parent="style/Widget.Sherlock.ActionBar.TabText">
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock android-actionbar

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