如何运行Android Lint以便它只报告我的项目模块,并忽略我正在使用的任何库项目?即使我将Lint瞄准我的项目模块,它也会在库项目中列出我不感兴趣的问题列表 - 我想集中精力修复我自己代码中的问题.
我看不到一个参数来指定它是否跟随对库项目的引用,但也许你可以看到如何做到这一点.
想象一下,一个活动打开的典型场景,需要调用REST HTTP API来获取一些内容,并且一旦收到更新UI.显然,API调用需要在单独的线程上进行,但是应该使用AsyncTask,IntentService还是其他方法完成,为什么?
我的应用程序包括一个通过广播接收位置的服务,还有一个活动注册这些相同的广播.间歇性地,显然只在某些设备上,活动随之爆发:
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)
我无法使用调试器来查看应用程序的状态,因为我无法重现此错误,所以我依赖于分析日志.
这个例外究竟意味着什么?即收到它有什么问题?
构建项目会从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设备屏幕,我希望它分为两部分:
具体看一些场景:
目前我已经为这两个部分分配了权重,这也不算太糟糕,但是如果文本很小,地图就不会扩展以占用空间,并且布局有一个浪费的空白,地图可以有用的.
我已经尝试了大量的组合但却看不出如何实现这一点.对我来说似乎是一种常见的经历,我知道自己想要什么,但却无法看到如何获得可用的视图来实现它.我希望有一个很简单的方法来做到这一点.
请随意让我看起来像个傻瓜,并指出我错过的明显属性:-)
================================================== ====================
据我所知,只有在声明性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) 在配备NFC读卡器硬件的Android设备上,是否有任何内置支持使用NFC标签内容来启动意图(例如启动应用程序)?我问默认是否支持,我知道我可以构建自己的应用程序来监听NFC事件并处理它们.
我见过的所有NFC标签编写应用程序似乎只支持文本/ URL /联系人,并且联系人支持似乎没用,因为许多太大而不适合标记.
我正在使用此处提供的示例代码向操作栏添加导航标签: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项目中,我们需要以干净的方式将数据从某个地方(REST,SQL,缓存等)提取到UI中,我们通常使用Loader,Service或(可能是yuk)AsyncTask,但我发现所有这些方法由于以下几个原因不满意:
我被这些文章中概述的想法所吸引: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.
这是工程设计,总是需要权衡,虽然这似乎提供了更清晰的关注点分离,但是装载机/服务模板的减少,缺点是什么?
我的问题是,是否有任何基本原因不采用这种基于消息的Android应用程序方法?
android android-service android-cursor android-testing android-cursorloader
我以前曾经多次使用过Maps API而没有遇到这个问题,但我显然对这个IntelliJ项目做错了.在Settings-> SDKs下,我在类路径中指定了平台7 Google API - 它仍然无法构建,表示Maps API不存在.我也尝试在Google API .jar的类路径中添加单独的引用,但仍然是同样的问题.
如何修复IntelliJ IDE项目以使其正确构建针对Google API?
这是漫长的一天,我可能错过了一些明显的东西.
我正在使用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)