小编Ale*_*ood的帖子

如何从managedQuery转换到LoaderManager/CursorLoader?

我正在开发一个针对API级别8(2.2,Froyo)的Android应用程序.我正在使用a ContentProvider,这很简单,我正在使用SimpleCursorAdapter填写我的列表视图,但我在SimpleCursorAdapter的文档中注意到,不推荐使用以下注释的无标记构造函数:

不推荐使用此构造函数.不鼓励使用此选项,因为它会导致在应用程序的UI线程上执行Cursor查询,从而导致响应能力较差甚至应用程序无响应错误.或者,使用带有CursorLoader的LoaderManager.

由于我的目标是API级别8,因此a LoaderManager不依赖于Activity.FragmentActivity兼容包中的类执行此操作,但我没有使用Fragments.

我的问题是:我应该如何LoaderManager/CursorLoader在针对11级以前API级别的应用中使用它?我是否被迫转换为Fragments或者我应该恢复到已弃用的SimpleCursorAdapter构造函数(但是使用一个AsyncTask来保持UI线程友好,这CursorLoader应该是什么)?

java android simplecursoradapter android-fragments android-loadermanager

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

Android广播接收器

我是android的新手.我哪知道之间的区别IntentBroadcastReceiver.我有更多的困惑BroadcastReceiverIntent.

请帮帮我.简单的代码将有所帮助.

android

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

带有LoaderManager兼容包的ExpandableListFragment

我想让我的ExpandableListActivity与Honeycomb兼容.我想知道为什么兼容包没有ExpandableListFragment.

有没有办法使ExpandableListView与普通的Fragment类一起工作?如何使用LoaderManager加载游标?

android expandablelistview android-fragments android-loadermanager android-support-library

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

Android:CursorLoader在非最顶层的Fragment上崩溃

我有一些使用CursorLoader检索其内容的ListFragments.当用户向下钻取内容时,一个Fragment替换另一个(Activity保持不变).但如果内容在非最顶层的片段上发生变化,则应用程序崩溃:

E/AndroidRuntime(18830): FATAL EXCEPTION: main
E/AndroidRuntime(18830): java.lang.RuntimeException: Unable to resume activity {com.example.ExampleApp/com.example.ExampleApp.ExampleActivity}: java.lang.IllegalStateException: Content view not yet created
E/AndroidRuntime(18830):        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
E/AndroidRuntime(18830):        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
E/AndroidRuntime(18830):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:957)
E/AndroidRuntime(18830):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(18830):        at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(18830):        at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(18830):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(18830):        at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(18830):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(18830):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(18830):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(18830): Caused by: java.lang.IllegalStateException: Content view not yet created
E/AndroidRuntime(18830):        at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
E/AndroidRuntime(18830):        at android.support.v4.app.ListFragment.setListShown(ListFragment.java:280)
E/AndroidRuntime(18830):        at android.support.v4.app.ListFragment.setListShownNoAnimation(ListFragment.java:266)
E/AndroidRuntime(18830):        at com.example.ExampleApp.FirstListFragment.onLoadFinished(FirstListFragment.java:102)
E/AndroidRuntime(18830):        at com.example.ExampleApp.FristListFragment.onLoadFinished(FirstListFragment.java:20)
E/AndroidRuntime(18830):        at android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:414) …
Run Code Online (Sandbox Code Playgroud)

android cursor android-fragments android-loadermanager

14
推荐指数
1
解决办法
2530
查看次数

取消PendingIntent

在a中使用PendingIntent时AppWidgetProvider,我使用以下代码:

views.setOnClickPendingIntent( viewId,
                PendingIntent.getBroadcast( context, 0, intent,
                PendingIntent.FLAG_UPDATE_CURRENT ) );
Run Code Online (Sandbox Code Playgroud)

所以目前没有对getBroadcast方法返回的PendingIntent的引用.在特定情况下,我现在想要取消PendingIntent.有没有办法从视图中获取PendingIntent?或者是之后通过保持对它的引用来调用PendingIntent的cancel方法的唯一方法?

android android-pendingintent

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

试图在Android中使用holo主题无法正常工作

我一直试图在Android中设置一个全息主题,但我无法让它识别它.有任何想法吗?

张贴是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:theme="@android:style/Theme.Holo">
        <activity
            android:name=".TestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

@android:style/Theme.Holo即使我将minSdkVersion更改为11,它也会给我一条红线.任何想法?

更新:

我改了行<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>,以<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>我仍然得到同样的错误.

更新2:

这最终导致我的目标api在清单中正确指定,但在项目属性中没有.很奇怪,但现在还好.

java android android-manifest android-layout

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

在完成AsyncTask后,如何处理解除DialogFragment(兼容性lib)的问题

关于如何在AsyncTask期间处理配置更改的帖子很多,但是当AsyncTask完成并尝试解除DialogFragment(兼容性库)时,我找不到任何关于后台应用程序(onPause())的明确解决方案.

这是问题,如果我有一个AsyncTask运行应该解雇onPostExecute()中的DialogFragment,如果应用程序在后台尝试关闭DialogFragment时,我会收到IllegalStateException.

private static class SomeTask extends AsyncTask<Void, Void, Boolean> {

    public SomeTask(SomeActivity tActivity)
    {
        mActivity = tActivity;
    }

    private SomeActivity mActivity;

    /** Set the view during/after config change */
    public void setView(Activity tActivity) {
        mActivity tActivity;
    }

    @Override
    protected Boolean doInBackground(Void... tParams) {
        try {
          //simulate some time consuming process
          TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException ignore) {}
        return true;
    }

    @Override
    protected void onPostExecute(Boolean tRouteFound) {
        mActivity.dismissSomeDialog();  
    }

}
Run Code Online (Sandbox Code Playgroud)

活动看起来像这样:

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

public class SomeActivity extends FragmentActivity { …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments

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

如何通过默认的Android Downloader下载文件?

如何使用Android下载程序下载文件?(WebBrowser正在使用的下载器).

我试过这样的事情:

Intent i = new Intent(Intent.ACTION_VIEW , Uri.parse("MyUrl"));
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

编辑

我使用的是Android 2.2

debugging android file download android-2.2-froyo

13
推荐指数
3
解决办法
9485
查看次数

Loader将结果传递给错误的片段

基于android开发人员示例,我有一个使用ActionBar选项卡滑动选项卡的活动.

每个选项卡显示一个片段,每个片段(实际上,SherlockFragment)通过自定义AsyncTaskLoader加载不同类型的远程api请求.

问题是,如果您点击一个标签移动2个标签/页面,而您要离开的标签的片段(旧片段)正在加载结果,则该结果将传递到您移动到的标签的片段(新片段).在我的情况下,这会导致ClassCastException,因为预期的结果是不兼容的类型.

在代码中,情况的要点是:

装载机:

public class FooLoader extends AsyncTaskLoader<Foo>
public class BarLoader extends AsyncTaskLoader<Bar>
Run Code Online (Sandbox Code Playgroud)

片段:

public class FooFragment extends Fragment implements LoaderManager.LoaderCallbacks<Foo> {
...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLoaderManager().initLoader(0, null, this);
    }
    public Loader<Foo> onCreateLoader(int id, Bundle args) { return new FooLoader(); }
...
}
public class BarFragment extends Fragment implements LoaderManager.LoaderCallbacks<Bar> {
    ...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLoaderManager().initLoader(0, null, this);
    }
    public Loader<Bar> onCreateLoader(int id, Bundle args) { return new …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-loadermanager android-loader

13
推荐指数
2
解决办法
2964
查看次数

NullPointerException(@PhoneWindow:onKeyUpPanel:1002){main}

我最近在分析中遇到了奇怪的异常.

java.lang.NullPointerException
at com.android.internal.policy.impl.PhoneWindow.onKeyUpPanel(PhoneWindow.java:1002)
at com.android.internal.policy.impl.PhoneWindow.onKeyUp(PhoneWindow.java:1703)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2114)
at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3626)
at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3596)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2839)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4904)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我错过了我可以采取的措施来防止这种情况.

java android

13
推荐指数
2
解决办法
1350
查看次数