相关疑难解决方法(0)

在Android上旋转活动重启

在我的Android应用程序中,当我旋转设备(滑出键盘)然后我Activity重新启动(onCreate被调用).现在,这可能是它应该如何,但我在onCreate方法中做了很多初始设置,所以我需要:

  1. 将所有初始设置放在另一个功能中,这样就不会在设备旋转时丢失所有功能
  2. 这样做onCreate不会再次调用,布局只是调整或
  3. 将应用限制为仅限肖像,以便onCreate不调用.

android rotation android-activity

1341
推荐指数
25
解决办法
37万
查看次数

活动已泄露最初添加的窗口

这个错误是什么,为什么会发生?

05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.ViewRoot.<init>(ViewRoot.java:231)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.Dialog.show(Dialog.java:239)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.mypkg.myP$PreparePairingLinkageData.onPreExecute(viewP.java:183)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.AsyncTask.execute(AsyncTask.java:391)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.mypkg.myP.onCreate(viewP.java:94)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544) …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks dialog

1117
推荐指数
23
解决办法
51万
查看次数

如何在android中创建自己的Listener接口?

有人可以帮助我用一些代码片段创建用户定义的监听器界面吗?

android

125
推荐指数
6
解决办法
19万
查看次数

Android碎片.在屏幕旋转或配置更改期间保留AsyncTask

我正在使用智能手机/平板电脑应用程序,只使用一个APK,并根据屏幕大小根据需要加载资源,最佳设计选择似乎是通过ACL使用Fragments.

这个应用程序一直工作正常,直到现在只是基于活动.这是一个模拟类,用于处理活动中的AsyncTasks和ProgressDialogs,以便在屏幕旋转或通信中发生配置更改时使它们工作.

我不会改变清单以避免重新创建活动,有很多原因我不想这样做,但主要是因为官方文档说它不是推荐的,而且我已经管理了这么远,所以请不要推荐路线.

public class Login extends Activity {

    static ProgressDialog pd;
    AsyncTask<String, Void, Boolean> asyncLoginThread;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.login);
        //SETUP UI OBJECTS
        restoreAsyncTask();
    }

    @Override
    public Object onRetainNonConfigurationInstance() {
        if (pd != null) pd.dismiss();
        if (asyncLoginThread != null) return (asyncLoginThread);
        return super.onRetainNonConfigurationInstance();
    }

    private void restoreAsyncTask();() {
        pd = new ProgressDialog(Login.this);
        if (getLastNonConfigurationInstance() != null) {
            asyncLoginThread = (AsyncTask<String, Void, Boolean>) getLastNonConfigurationInstance();
            if (asyncLoginThread != null) {
                if (!(asyncLoginThread.getStatus()
                        .equals(AsyncTask.Status.FINISHED))) {
                    showProgressDialog();
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

android progressdialog android-asynctask android-fragments android-support-library

84
推荐指数
4
解决办法
6万
查看次数

避免在android中的方向更改时使用asynctask重新加载活动

如何在用户更改方向时,如何避免在活动中使用asynctask类重新加载活动?谁能举个例子?

android screen-orientation android-asynctask

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

错误:视图未附加到窗口管理器

我从客户端远程获取以下内容,因此我不知道他们正在使用什么硬件等.

java.lang.IllegalArgumentException: View not attached to window manager
       at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
       at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200)
       at android.view.Window$LocalWindowManager.removeView(Window.java:417)
       at android.app.Dialog.dismissDialog(Dialog.java:279)
       at android.app.Dialog.access$000(Dialog.java:72)
       at android.app.Dialog$1.run(Dialog.java:108)
       at android.app.Dialog.dismiss(Dialog.java:263)
       at com..mysite.android.ActivityGame$1.onFinish(ActivityGame.java:154)
       at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:123)
       at android.app.ActivityThread.main(ActivityThread.java:4203)
       at java.lang.reflect.Method.invokeNative(Native Method)
       at java.lang.reflect.Method.invoke(Method.java:521)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
Run Code Online (Sandbox Code Playgroud)

这是因为ProgressDialog而发生的

    progressDialog = new ProgressDialog( this );
    progressDialog.setMessage(getString(R.string.get_ready));
    progressDialog.setCancelable(false);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setMax(12);
    progressDialog.show();

    new CountDownTimer(3000, 250) {

         @Override
        public void onTick(long millisUntilFinished) {
             //progressDialog.incrementProgressBy(1);
         }

         @Override
        public void onFinish() {
             progressDialog.dismiss(); //********* ERROR HAPPENS HERE *********
             nextQuestion();
         }
    }.start();
Run Code Online (Sandbox Code Playgroud)

活动在清单中看起来像这样. …

android

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

当进度条在android中旋转时如何停止更改方向

我有一个注册屏幕,用户输入所有注册详细信息,当用户点击"注册"按钮时,我显示进度条(进度条开始旋转),然后将用户带到主屏幕.如果用户旋转当进度条旋转时,进度条被取消.我希望方向不会从potrait变为横向,反之亦然,当进度条可见时(意味着它正在旋转).进度条如何停止方向改变旋转?任何帮助将不胜感激.

android screen-orientation orientation-changes progress-bar

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

通过运行AsyncTask处理方向更改

使用案例:

用户启动将加载验证码的应用程序.用户填写验证码并尝试下载一些信息.

问题:

如果用户在下载时旋转设备Activity则被销毁.在执行结束时,AsyncTask正在尝试更新被破坏的内容Activity,结果"View not attached to window manager".

"错误的"解决方案:

我可以用a掩盖问题,android:configChanges="orientation|keyboardHidden|screenSize"但是这样布局不会更新为横向.

我在问什么:

是否可以更改方向并更改传递给上下文的"参考" AsyncTask

这个答案建议检查对话框是否为空,但它不是我正在寻找的.

在这里,他建议使用WeakReference(这里有一个关于如何使用它的好片段),但我不明白它是否是我正在寻找的.

更明确一点,这就是我在onPostExecute中所做的:

@Override
protected void onPostExecute(Auto result) {
    progress.dismiss();
    new DownloaderCaptcha(context).execute("");
    ((EditText)context.findViewById(R.id.editTextCaptcha)).setText("");
    context.findViewById(R.id.progrBar).setVisibility(View.VISIBLE);
    context.findViewById(R.id.captcha).setVisibility(View.INVISIBLE);

    if(result != null) {
        Storage.storeHistory(context, result.getTarga().getValue());

        Intent i = new Intent(context, MenuActivity.class);
        i.putExtra("result", result);
        context.startActivity(i);
    } else {
        ErrorDialog.show(context, error);
    }
}
Run Code Online (Sandbox Code Playgroud)

java android android-asynctask android-activity

8
推荐指数
1
解决办法
8438
查看次数

Android快速位图加载

我有一块想要在屏幕上加载的图像.所有图像都是我下载并存储在SD-CARD上的文件.

到目前为止,我发现了两种方法,首先是在活动开始时将它们加载到主线程上(我得到了大约70个图像,所有加载它们需要大约2.1秒).

另一种方式是我现在正在测试的.将它们加载到分离的线程上,同时我可以为用户显示加载动画.现在我使用ThreadPoolExecutor实现了4.3秒.我在10个线程上做到了.

最后一种方法,(这是我唯一没有测试的方法)是使用精灵表.

我不能使用应用程序缓存,因为在我的应用程序中我有很多屏幕,每个屏幕都有自己的图像集.

您怎么看?加载大量图像的最快方法是什么?您知道哪些加速技术可以帮助我?

android load bitmap

7
推荐指数
2
解决办法
6249
查看次数

android屏幕方向:仅锁定部分布局

我正在构建一个使用相机预览的相机应用程序.为了使用全屏进行预览,我锁定了活动

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

现在我遇到了以下问题:每当我渲染一个表单或者我必须显示一个对话框时,它总是以横向模式显示,即使用户在纵向模式下使用他/她的设备也是如此.我试图通过使用变换动画来旋转edittext视图,并且它们被正确旋转,但我仍然无法再将它们聚焦,并且键盘也始终显示在横向中:(

你知道在这里寻找方法吗?

重要提示:检测方向不是问题所在.问题是:如何以仍然可用的方式旋转表单/视图/视图组和键盘.

我知道它必须以某种方式成为可能:三星的相机应用程序(它与星系S3一起提供)能够在不旋转预览的情况下旋转视图,因此它必须是可能的!看到:

http://www.letsgomobile.org/images/reviews/0186/galaxy-s3-camera.jpg

http://cdn2.mos.techradar.futurecdn.net//art/mobile_phones/Samsung/GalaxyS3/Galaxy%20Fire/Samsung_Galaxy_S3_25-580-100.JPG

android android-layout

6
推荐指数
1
解决办法
2194
查看次数