我有一个应用程序需要从服务器提取数据并将其插入SQLite数据库以响应用户输入.我认为这很简单 - 从服务器提取数据的代码是AsyncTask的一个相当简单的子类,它完全按照我的预期工作,而不会挂起UI线程.我使用一个简单的接口为它实现了回调功能,并将其包装在一个静态类中,所以我的代码如下所示:
MyServerCaller.getFolderContents(folderId, new OnFolderContentsResponseListener() {
@Override
public void onFolderContentsResponse(final List<FilesystemEntry> contents) {
// do something with contents
}
}
Run Code Online (Sandbox Code Playgroud)
一切都还不错.即使服务器需要一个小时来检索数据,UI仍然可以顺利运行,因为getFolderContents中的代码在AsyncTask的doInBackground方法中运行(该方法与UI分开).在getFolderContents方法的最后,调用onFolderContentsResponse并传递从服务器接收的FilesystemEntry列表.我只是真的说了这一切,所以我希望很清楚我的问题不在getFolderContents方法或我的任何网络代码中,因为它不会在那里发生.
当我尝试通过onFolderContentsResponse方法中的ContentProvider子类插入数据库时出现问题; 在执行该代码时,UI总是挂起,这使我相信尽管从AsyncTask的doInBackground方法调用,插入仍然在UI线程上运行.以下是有问题的代码:
MyServerCaller.getFolderContents(folderId, new OnFolderContentsResponseListener() {
@Override
public void onFolderContentsResponse(final List<FilesystemEntry> contents) {
insertContentsIntoDB(contents);
}
}
Run Code Online (Sandbox Code Playgroud)
和insertContentsIntoDB方法:
void insertContentsIntoDB(final List<FilesystemEntry> contents) {
for (FilesystemEntry entry : contents) {
ContentValues values = new ContentValues();
values.put(COLUMN_1, entry.attr1);
values.put(COLUMN_2, entry.attr2);
// etc.
mContentResolver.insert(MyContentProvider.CONTENT_URI, values);
}
}
Run Code Online (Sandbox Code Playgroud)
其中mContentResolver先前已设置为getContentResolver()方法的结果.
我已经尝试将insertContentsIntoDB放在自己的Thread中,如下所示:
MyServerCaller.getFolderContents(folderId, new OnFolderContentsResponseListener() {
@Override
public void onFolderContentsResponse(final List<FilesystemEntry> contents) { …Run Code Online (Sandbox Code Playgroud) java user-interface multithreading android android-contentresolver
当我在布局中使用时,它指定了这个对话框,android:layout_width="match_parent"我得到了这个对话框:

我需要更广泛的对话.有任何想法吗?
我ActionMode用来选择网格中的项目.问题是我无法识别是否单击了完成按钮.我唯一能做的就是知道ActionMode已经完成了.但是按下Back也完成了ActionMode.期望的行为是接受选择完成点击,并退出ActionMode在回机.
我尝试使用,ActionMode.setCustomView()但它不会影响完成按钮.在Activity.onBackPressed()启动ActionMode时,不叫.
我发现的一个解决方案是使用ActionBarSherlock并手动获取Done按钮:
View closeButton = findViewById(R.id.abs__action_mode_close_button);
Run Code Online (Sandbox Code Playgroud)
但它仅适用于Android 2.x-3.x,因为使用4.xa本机操作栏.
我正在尝试将listview放在listviewitem中.内部列表视图不应该是可滚动的,而是需要显示其所有行的所需大小.有更好的方法吗?表,网格,......?我现在面临的问题是内部列表视图没有占用它所需的空间,因此它在第一个列表项的末尾被切断.如果我尝试滚动,只是外部列表视图滚动这正是我想要的.
谢谢,我的最终解决方案是
LinearLayout layout = (LinearLayout) row.findViewById(R.id.LLBroadcasts);
layout.removeAllViews();
for (Item b : bs.getItems()) {
View child = _inflater.inflate(R.layout.item_row, null);
TextView tvTitle = (TextView) child.findViewById(R.id.TVItemTitle);
tvTitle.setText(b.getTitle());
TextView tvDesc = (TextView) child.findViewById(R.id.TVItemDescription);
tvDesc.setText(b.getDescription());
layout.addView(child);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试我的手和Android应用程序开发.我目前正在使用Eclipse(我不记得版本,无论最新版本是什么).我越过了一座桥,在那里我似乎无法理解我做错了什么.我正在尝试使用Google Maps V2 API.我已经浏览了几个文档并尝试了几种技术,所有这些都导致了同样的错误:
Android.view.Inflate Exception: Binary XML file line #2: Error inflating class fragment
Run Code Online (Sandbox Code Playgroud)
我一直在把钥匙砸到钥匙上2天,试图抓住我在这里做错了什么.
我做过的事情:
a library.android-support-v4.jar在我的项目的依赖项中.我从类似于我的问题尝试了很多不同的答案,但无济于事.:(我通常可以解决这些问题,但也许我太过分了.
我在eclipse中的包浏览器树看起来像
这是代码:>
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
Run Code Online (Sandbox Code Playgroud)
表现
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.testing.svma"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" …Run Code Online (Sandbox Code Playgroud) Problem:可以轻松缩放图像和Web视图.但我想缩放整个活动.我怎样才能做到这一点?
Here, I provide wire-frame:
从这里你可以理解,我想做什么.
Request如果您有任何解决方案,请分享.
谢谢.
我得到一个非常令人费解的错误,我不知道如何开始工作.
我有一个简单的应用程序,只有一个活动,视图是用Fragments实现的.其中一个片段里面有一个ViewPager; 所以我决定我想要使用v4支持库的getChildFragmentManager类.我还必须使用ActionBarSherlock,这会导致问题,因为它没有附带v4库的v11.
我通过用v11库替换ABS中的v4支持库来解决这个问题,所有编译好的东西都可以工作,包括ViewPager.
这是奇怪的部分:
第一次打开ViewPager的片段时,它可以正常工作; 但导航到的第二次,应用程序崩溃,给出了无用的堆栈跟踪.从调试开始,我发现问题出在getChildFragmentManager返回的FragmentManager上; 它会抛出No Activity错误.
有没有人知道是什么原因引起的?
我将发布您认为相关的代码.
谢谢你,大卫
android android-fragments android-viewpager actionbarsherlock android-support-library
我在Galaxy S3上使用Android 4.1.2.目前android mediaplayer总是尝试RTSP UDP(RTP/AVP/UDP)方法与RTSP服务器连接.
如果Android MediaPlayer没有在其UDP端口上接收数据..超时,然后尝试RTSP TCP交错(RTP/AVP/TCP).这很好,但它引入了10秒左右的延迟.我想避免这种延迟,并强制Android MediaPlayer始终对所有或特定URL使用RTSP TCP交错(RTP/AVP/TCP).
我尝试在Here中给出建议,向SETUP请求发送461或400错误响应代码.但似乎媒体播放器不关心响应,并为两个轨道发送SETUP命令,然后挂起连接.
我该如何解决这个问题?
我正在开发一个android项目,当用户下载文件时会显示进度对话框.
但是当用户触摸屏幕时,进度对话框将被取消而不等待100%.我已经尝试过这个:
public boolean onTouchEvent(MotionEvent e) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我怎么能避免这个?
更新1:
似乎setCancelable(false)工作正常.非常感谢你的答案,但是当下载持久且用户决定放弃它时,这将是不可能的,因为我已经停用了后面的keyCode:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
我怎么能搞清楚这一点?
我有一个Android应用程序,我在2013年3月17日完美地导出了签名版本.然后在2013年3月19日我更新了Facebook SDK和Android SDK Manager,然后尝试再次导出我的应用程序的签名版本.第一个错误.
现在我遇到了两个问题之一,我无法导出我的应用程序的新签名版本以重新上传Google Play商店.
我尝试了很多我在网上找到的解决方案,但仍然没有运气.我甚至删除并重新安装了Eclipse,ADT和Facebook SDK.不过,我有问题.
Eclipse实际上崩溃了,这真的很奇怪.有任何想法吗?
更新:因此,我不再在签名应用程序的导出中获得"转换为Dalvik格式失败,错误1".Eclipse只是在导出已签名的应用程序时崩溃.有任何想法吗?我有所有最新的软件:eclipse,facebook sdk,android sdk等.我正在运行最新版本的Mac OS X.