我有一个片段类扩展Fragment并调用setHasOptionsMenu参与菜单.这个类也实现了onCreateOptionsMenu,onPrepareOptionsMenu和onOptionsItemSelected.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
....
}
Run Code Online (Sandbox Code Playgroud)
我正在使用FragmentTransaction我的Activity(扩展FragmentActivity)动态加载这个片段.
但是没有调用任何菜单回调(onCreateOptionsMenu,onPrepareOptionsMenu和onOptionsItemSelected)(我在这些方法中调试了一些断点)并且未显示菜单.
我错过了什么吗?我需要在我的活动中添加一些内容吗?
我正在使用Android兼容性库,使用L11 SDK进行编译并在Xoom中进行测试.
编辑:我发现了问题.我的AndroidManifest目标是L11,这似乎隐藏了菜单按钮并阻止调用回调.但是,如果我从清单中删除它,我会丢失一些我需要的其他功能(例如列表中的激活状态).有没有人知道如何解决这个问题(启用菜单按钮)而不targetSdkVersion=11从清单中删除?
我尝试使用自定义身份验证器设置自定义OkHttpClient,但是正如文档所说:"响应来自远程Web或代理服务器的身份验证挑战." 我必须为每个图像发出2个请求,这并不理想.
有像Retrofit这样的请求拦截器吗?或者我在OkHttpClient中遗漏了什么?
我正在使用最新版本:
compile 'com.squareup.picasso:picasso:2.3.2'
compile 'com.squareup.okhttp:okhttp:2.0.+'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.+'
compile 'com.squareup.okio:okio:1.0.0'
Run Code Online (Sandbox Code Playgroud)
谢谢!
我没有太多成功将动画应用于视图中的视图RemoteViews.
为了简单起见,假设我有一个带有a ImageView和a 的小部件Button.单击按钮时,我想向ImageView添加一个简单的动画(例如旋转).
因为我不能findViewById()像在an中那样使用Activity并且RemoteViews没有动画的setter,所以我不知道该怎么办.
我正在考虑使用新的布局替换窗口小部件的RemoteViews,类似于原始布局,但是这个已经加载了动画.我可以这样做吗?是否可以在布局中嵌入动画?
对于WidgetProvider,代码将是这样的:
Intent intent = new Intent(context, RotateService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.a_widget);
views.setOnClickPendingIntent(R.id.a_button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
Run Code Online (Sandbox Code Playgroud)
然后在RotateService中:
ComponentName myWidget = new ComponentName(this, MyWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews newViews = buildNewRemoteViewsWithAnimation();
manager.updateAppWidget(myWidget, newViews);
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
所以我有一个ListView,我想改变每个项目背景和文本的颜色.此ListView位于ListFragment中.我的代码膨胀了布局,onCreateView并膨胀了每个项目的布局newView.
该android:state_pressed="true"工作正常,每当我在一个项目按背景变为彩色.但是当选择一个项目时,bg颜色或文本颜色都没有变化,即使我已经android:state_selected="true"在选择器中定义了一个项目.
编辑:我正在使用SDK级别11(Android 3.0)和摩托罗拉Xoom.
列表片段布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
列表项布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="25dp"
android:background="@drawable/list_item_bg_selector">
<TextView android:id="@+id/form_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_xlarge"
android:textStyle="bold"
android:textColor="@drawable/list_item_text_selector" />
<TextView android:id="@+id/form_subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_medium"
android:textStyle="normal"
android:layout_marginTop="5dp"
android:textColor="@drawable/list_item_text_selector" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
背景选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@color/white" />
<item
android:state_selected="true"
android:drawable="@drawable/list_item_bg_selected" />
<item
android:drawable="@color/list_bg" />
</selector>
Run Code Online (Sandbox Code Playgroud)
文字选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@color/white" /> …Run Code Online (Sandbox Code Playgroud) 我正在使用声明性管道语法在docker容器中执行一些CI工作.
我注意到Jenkins的Docker插件使用主机中jenkins用户的用户ID和组ID运行一个容器(即如果jenkins用户有用户ID 100和组ID 111,它将运行管道创建一个容器,命令docker run -u 100:111 ...).
我遇到了一些问题,因为容器将与非现有用户一起运行(特别是我遇到了一些没有主目录的用户的问题).所以我想创建一个Dockerfile,它将接收用户id和组ID作为构建参数,并在容器内创建一个合适的jenkins用户.Dockerfile看起来像这样:
FROM ubuntu:trusty
ARG user_id
ARG group_id
# Add jenkins user
RUN groupadd -g ${group_id} jenkins
RUN useradd jenkins -u ${user_id} -g jenkins --shell /bin/bash --create-home
USER jenkins
...
Run Code Online (Sandbox Code Playgroud)
dockerfile代理有一个additionalBuildArgs属性,所以我可以读取主机中jenkins用户的用户ID和组ID,并将它们作为构建aguments发送,但我现在遇到的问题似乎是没有办法执行这些命令在指定代理之前的声明性管道中.我希望我的Jenkinsfile是这样的:
// THIS WON'T WORK
def user_id = sh(returnStdout: true, script: 'id -u').trim()
def group_id = sh(returnStdout: true, script: 'id -g').trim()
pipeline {
agent {
dockerfile {
additionalBuildArgs "--build-arg user_id=${user_id} --build-arg group_id=${group_id}"
}
}
stages {
stage('Foo') {
steps …Run Code Online (Sandbox Code Playgroud) 我有一个平铺的位图,我用它作为View背景.这View,让我们说,有android:layout_height="wrap_content".问题是背景中使用的位图的高度参与视图的测量,增加了View高度.当内容的大小View小于用作图块背景的位图的高度时,可以注意到这一点.
让我举个例子.tile位图:

位图drawable(tile_bg.xml):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/tile"
android:tileMode="repeat"/>
Run Code Online (Sandbox Code Playgroud)
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#FFFFFF">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tile_bg"
android:text="@string/hello"
android:textColor="#000000" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
看起来如何:

的高度TextView最终被位图的高度.我期待的是位图被剪裁到的大小View.
有没有办法实现这个目标?
笔记:
View,这取决于孩子们(我在使用这个ViewGroup)View小于位图的大小时,否则位图会被正确地重复剪切(即,如果视图大小是位图大小的1.5倍,你最终会看到位图的1.5倍).我正在开发一个使用C2DM来接收推送通知的应用程序.我已经实现了整个C2DM电路(客户端和服务器),它工作正常.
目前,我的应用程序有一个按钮来引导C2DM注册,当从Google收到注册ID令牌时,我会在我的应用服务器中调用webservice以将设备与注册ID相关联.
我将在我的应用程序中实现身份验证,并且我有一些与C2DM注册处理相关的问题.
艺术家有很多活动(基本上是用户之间的互动缓存):
class Activity < ActiveRecord::Base
belongs_to :receiver, :class_name => 'Artist', :foreign_key => :receiver_id #owns the stuff done "TO" him
belongs_to :link, :polymorphic => true
belongs_to :creator, :class_name => 'Artist', :foreign_key => :creator_id #person who initiated the activity
end
Run Code Online (Sandbox Code Playgroud)
例如:
Activity.create(:receiver_id => author_id, :creator_id => artist_id, :link_id => id, :link_type => 'ArtRating')
Run Code Online (Sandbox Code Playgroud)
我想为每位艺术家创建一个活动流页面,包括不同类型的活动列表,ArtRatings(喜欢,不喜欢),收藏,关注等.
控制器看起来像这样:
class ActivityStreamController < ApplicationController
def index
@activities = @artist.activities.includes([:link,:creator,:receiver]).order("id DESC").limit(30)
end
end
Run Code Online (Sandbox Code Playgroud)
db调用正确地急切地加载多态链接对象:
SELECT "activities".* FROM "activities" WHERE (("activities"."receiver_id" = 6 OR "activities"."creator_id" = 6)) ORDER BY …Run Code Online (Sandbox Code Playgroud) 我试图根据特定的ID查询我的数据库.
String sql = "SELECT * FROM mash WHERE recipe_id = '" + id + "'";
Cursor data = database.rawQuery(sql, null);
Run Code Online (Sandbox Code Playgroud)
如果这是第一次运行活动,则表将与id列一起存在,但不会有具有特定ID的记录.如何检查该特定记录是否存在,如果不存在,请添加它?关于检查特定列是否存在,我发现了很多内容,但没有关于检查特定记录是否存在的信息.
到目前为止,我已经尝试获取id列索引并检查它是否返回-1,但它实际上由于某种原因返回1.我可以在if语句中使用什么来验证是否尚未创建id列?
android ×7
android-c2dm ×1
animation ×1
docker ×1
dockerfile ×1
fragment ×1
jenkins ×1
listview ×1
okhttp ×1
picasso ×1
sql ×1
web-services ×1
widget ×1