对于应用程序和服务之间的通信,我为什么要使用绑定服务而不是在 Intent 中发送数据:
mServiceIntent = new Intent(getActivity(), RSSPullService.class);
mServiceIntent.setData(Uri.parse(dataUrl));
Run Code Online (Sandbox Code Playgroud)
我读到“如果服务已经在运行,它将再次使用 onStartCommand() 调用,以提供新的 Intent,但不会创建第二个副本。” 这意味着我可以以该意图发送消息来影响服务的进度,这就是在 google RandomMusicPlayer 示例中所做的:
public void onClick(View target) {
// Send the correct intent to the MusicService, according to the
// button that was clicked
if (target == mPlayButton)
startService(new Intent(MusicService.ACTION_PLAY));
else if (target == mPauseButton)
startService(new Intent(MusicService.ACTION_PAUSE));
else if (target == mSkipButton)
startService(new Intent(MusicService.ACTION_SKIP));
else if (target == mRewindButton)
startService(new Intent(MusicService.ACTION_REWIND));
else if (target == mStopButton)
startService(new Intent(MusicService.ACTION_STOP));
else if (target == mEjectButton) {
showUrlDialog();
}
Run Code Online (Sandbox Code Playgroud) 我有一个内容主要活动 - 一个WebView.
基本上,当用户打开应用程序时,我会快速检查他们是否已登录.如果他们没有登录,那么我会膨胀登录片段.
此时,在片段膨胀之前,您会在下面看到WebView的闪烁.它有点笨重.由于我必须在同一步骤中隐藏/显示操作栏,因此其他事情变得更糟.
有没有解决办法解决这个问题?我想我可以在需要之前隐藏我的WebView,但操作栏仍会显示片刻.对此问题的任何建议?
我正在尝试绘制一个自定义视图,一切都很好,除了最右边的部分被切断.我希望视图填充父级,只使用所需的高度(即我正在绘制的位图的高度.当我从活动的xml布局中删除填充时,自定义视图渲染得很好.所以我不是计算onMeasure并考虑父母填充.
请有人看看这段代码,并描述我为什么以及如何出错?谢谢
编辑包括@ nicko的答案和更多细节:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
ViewParent parent = getParent();
int leftPadding = 0;
int rightPadding = 0;
if (parent instanceof ViewGroup) {
leftPadding = ((ViewGroup) parent).getPaddingLeft();
rightPadding = ((ViewGroup) parent).getPaddingRight();
}
float wanabeHeight = calendar.getHeight();
float wanabeWidth = parentWidth - leftPadding - rightPadding;
int height = 0;
//Determine Height
switch(heightMode){
case MeasureSpec.EXACTLY: height = parentHeight;
break;
case MeasureSpec.AT_MOST:
height …Run Code Online (Sandbox Code Playgroud) 我正在异步加载数据,我有一个 AutoCompleteTextView,当数据加载时,它会在适配器中设置。当我单击搜索视图时,我想向用户显示所有结果。我可以确认 onClickListener 正在被调用,但结果仅在我第二次单击时显示。
private View.OnClickListener onAutoCompleteClickListener = new View.OnClickListener(){
@Override
public void onClick(View v) {
autoCompleteTextView.setText(" ");
searchAdapter.notifyDataSetChanged();
autoCompleteTextView.showDropDown();
}
};
Run Code Online (Sandbox Code Playgroud) 我正在编写一个小部件,我需要在布局上下载并设置一个位图.我试过的一切似乎都不起作用.
我现在创建了一个测试位图来设置视图,[更新]这个工作.
Bitmap.Config config = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(imageActiveWidth, imageHeight, config);
Canvas canvas = new Canvas(bitmap); // Load the Bitmap to the Canvas
Paint paint = new Paint();
paint.setColor(0xFFFFCCFF);
canvas.drawRect(0, 0, imageActiveWidth, imageHeight, paint);
views.setImageViewBitmap(resId, bitmap);
Run Code Online (Sandbox Code Playgroud)
使用资源文件确实有效:
Bitmap placeholderBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.placeholder_medium);
views.setImageViewBitmap(imageSlotId, placeholderBitmap);
Run Code Online (Sandbox Code Playgroud)
但是,使用下载的位图似乎不起作用.(在异步任务下载了位图之后,我有一个方法setBitmap,它是一行:
views.setImageViewBitmap(resId, proxy);
Run Code Online (Sandbox Code Playgroud)
结果 - 屏幕只是白色,没有位图
我真的很难理解如何让它工作,因为我需要能够下载位图并设置它们.
我在操作栏中有一个 AutoSearchTextView。当我过滤数据时,下拉菜单会隐藏,然后很快就会显示出来。我真的更喜欢 Play 商店的效果,您可以在其中过滤结果,下拉菜单始终可见,但下拉菜单中的内容会发生变化。
这是我的适配器中的过滤器代码,运行历史查询,获取历史并设置列表项。
@Override
public Filter getFilter() {
if (filter == null) {
filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
ResortFilterResult result = new ResortFilterResult();
String substr = constraint.toString().toLowerCase();
if (constraint != null) {
if (constraint.length() > 0) {
result.setHistory(runHistoryQuery(substr));
}
if (constraint.length() >= 3) {
LCResort[] resorts = searchResortWithQuery(substr);
result.setQueryResults(Arrays.asList(resorts));
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = result;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
ResortFilterResult result …Run Code Online (Sandbox Code Playgroud) 我从我的选项菜单中启动了一些片段,例如首选片段和对话片段.
当我打开首选项片段并点击后退按钮时,整个活动将关闭.对于按照我的预期工作的对话框片段,情况并非如此.
有人可以解释为什么会发生这种情况以及可接受的处理方式是什么?:)
要启动首选项片段:
getFragmentManager().beginTransaction()
.add(android.R.id.content, new SettingsFragment())
.addToBackStack("settings")
.commit();
Run Code Online (Sandbox Code Playgroud) 我在将外部html文件加载到webview时遇到问题.我以前做过这个并且它应该很容易,但由于某种原因,我一直无法获得网页.
我知道文件在目录中,因为我自己使用文件浏览器放置它们.
String filename = "file:///"+ Environment.getExternalStorageDirectory() + File.separator + "Android/data/com.example/files/test_html2.html";
webview.loadUrl(filename);
Run Code Online (Sandbox Code Playgroud)
我已经尝试将文件移动到root并尝试在那里,我已经删除了file://并将其替换为content://并且什么都没有.我已在清单中读取权限.
有任何想法吗?
我需要在列表视图中设置一个偏移量。我最初是使用ScrollBy(X,Y)实现的,但是一旦我触摸列表视图,它就会恢复为零(我的偏移量为负)。
如何保持此偏移量?