小编mar*_*mor的帖子

IllegalStateException:<MyFragment>当前不在FragmentManager中

我知道这听起来像是FragmentStatePagerAdapter IllegalStateException的副本:<MyFragment>当前不在FragmentManager中, 但他的解决方案与我的情况无关.

我很少遇到以下崩溃:

java.lang.RuntimeException:无法暂停活动{MyActivity}:

...

引起:java.lang.IllegalStateException:片段MyFragment {40648258 id = 0x7f070051}当前不在android.support.v4.app.FragmentStatePagerAdapter的android.support.v4.app.FragmentManagerImpl.putFragment(MT:516)的FragmentManager中.saveState(MT:185)在android.support.v4.view.ViewPager.onSaveInstanceState(MT:881)

...

在Android.app.Activity.onSaveInstanceState(Activity.java:1138)的com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1522)的android.view.View.saveHierarchyState(View.java:6238) )在MyActivity.onSaveInstanceState(MT:336)的android.support.v4.app.FragmentActivity.onSaveInstanceState(MT:480)处

看起来这是我无法理解的奇怪代码FragmentStatePagerAdapter:

for (int i=0; i<mFragments.size(); i++) {
    Fragment f = mFragments.get(i);
    if (f != null) {
        if (state == null) {
            state = new Bundle();
        }
        String key = "f" + i;
        mFragmentManager.putFragment(state, key, f);
    }
}
Run Code Online (Sandbox Code Playgroud)

它看起来像适配器获取我FragmentmFragments但不能添加其状态FragmentManager.

我找不到任何方法在我的测试设备上重新创建它,只是从一些用户那里收到了这个.

我正在使用支持包v4.

有帮助吗?谢谢.

java android illegalstateexception android-fragments android-viewpager

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

用于ListView的ScrollingViewBehavior

我有两个使用AppBarLayouta ToolbarTabLayout来自支持库22的活动.

两者的布局非常相似:A Toolbar在顶部,在它TabLayout下面,在它下面,ViewPager包含3 Fragment秒.

第一个活动Fragment有一个RecyclerView,第二个活动Fragment是使用一个ListView.

Toolbar来自https://github.com/chrisbanes/cheesesquare的可滚动示例在使用的第一个活动上工作正常RecyclerView,但是使用了ListView.

我试过创建了一个ListViewScrollBehavior扩展的自定义AppBarLayout.ScrollingViewBehavior,但到目前为止还没有运气.在TouchEvent滚动当s传递到自定义类只为横向滚动,而不是ListView(垂直).

任何方式使用CoordinatorLayoutListView

android android-listview android-support-library android-recyclerview

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

SharedPreferences的MODE_MULTI_PROCESS不起作用

SyncAdapter在主应用程序进程中独立运行自己的进程.

我正在使用一个静态包装类SharedPreferences,它在进程加载(应用程序onCreate)上创建一个静态对象,如下所示:

myPrefs = context.getSharedPreferences(MY_FILE_NAME, Context.MODE_MULTI_PROCESS | Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

包装器有get和set方法,如下所示:

public static String getSomeString() {
    return myPrefs.getString(SOME_KEY, null);
}

public static void setSomeString(String str) {
    myPrefs.edit().putString(SOME_KEY, str).commit();
}
Run Code Online (Sandbox Code Playgroud)

两者SyncAdapter和app都使用这个包装类来编辑和从prefs获取,这有时会工作,但很多时候我看到SyncAdapter在访问prefs时获取旧/缺少的prefs,而主应用程序正确地看到了最近的更改.

根据文档,我认为MODE_MULTI_PROCESS标志应该像我期望的那样工作,允许两个进程看到最新的更改,但它不起作用.

更新:

根据Per x90的建议,我试图避免使用静态SharedPreferences对象,而是调用getSharedPreferences每个get/set方法.这导致了一个新问题,即prefs文件在多进程同时访问时被删除(!!!).即我在logcat中看到:

(process 1): getName => "Name"
(process 2): getName => null
(process 1): getName => null
Run Code Online (Sandbox Code Playgroud)

从那时起,保存在SharedPreferences对象上的所有prefs 都被删除了.

这可能是我在日志中看到的另一个警告的结果:

W/FileUtils(21552): Failed to chmod(/data/data/com.my_company/shared_prefs/prefs_filename.xml): libcore.io.ErrnoException: chmod failed: ENOENT (No such file …
Run Code Online (Sandbox Code Playgroud)

android multiprocessing sharedpreferences

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

Android Studio CPU Profiler - 开始录制应用程序启动

我希望在冷启动我的应用程序时获得方法跟踪.

根据CPU Profiler文档,我需要点击上的Record按钮CPU Profiler开始方法跟踪录制,但是我希望从新应用程序进程开始的瞬间在应用程序上进行此录制.

我尝试使用"配置文件"工具栏按钮而不是"运行"按钮运行我的应用程序,但这似乎没有做任何事情,我没有开始录制.

我仍然可以使用旧的方法跟踪使用Debug.startMethodTracing()/ Debug.stopMethodTracing()但是生成与Studio中的旧接口兼容的跟踪文件,我如何对新接口执行相同的操作?

android profiling android-studio android-studio-3.0 android-profiler

21
推荐指数
0
解决办法
869
查看次数

带有可绘制选择器的ImageView src忽略启用状态

当使用状态选择器作为src时ImageView,enabled="false"将被忽略.

即这不能正常工作:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:src="@drawable/state_drawable" >
Run Code Online (Sandbox Code Playgroud)

PS: 我有一个丑陋的解决方法,我会很快发布它作为答案,如果你有更好的或这种行为的解释,请告诉我.

xml android android-imageview

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

Facebook App Event sdk 4.38.0在ViewHierarchy.setAppearanceOfView中抛出NPE

我在其中一个使用facebook sdk的应用程序中遇到问题.将sdk从4.27.0升级到4.38.0之后,Fabric开始记录这个致命异常.我不知道它何时或如何发生因为我自己无法重现它.也许有些人在升级facebook SDK后遇到了这个问题.

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
   at com.facebook.appevents.codeless.internal.ViewHierarchy.setAppearanceOfView(ViewHierarchy.java:182)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:197)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.attachListeners(ButtonIndexer.java:166)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.process(ButtonIndexer.java:161)
   at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.run(ButtonIndexer.java:145)
   at android.os.Handler.handleCallback(Handler.java:754)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:163)
   at android.app.ActivityThread.main(ActivityThread.java:6221)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
Run Code Online (Sandbox Code Playgroud)

java android facebook facebook-audience-network

10
推荐指数
1
解决办法
410
查看次数

UICollectionView moveItemAtIndexPath:toIndexPath:不在屏幕上发出移动项目

我正在尝试在iOS 6上的UICollectionView中重新排序项目的动画.

我写了这段代码:

    NSMutableDictionary *from = [NSMutableDictionary dictionaryWithCapacity:self.count];
    for (int ii = 0; ii < self.count; ii++) {
        MyItem item = [self getItemAtIndex:(NSInteger)ii];
        [from setObject:[NSNumber numberWithInt:ii] forKey:[NSNumber numberWithInt:item.id]];
    }

    [self sort];

    [self.collectionView performBatchUpdates:^{
        for (int ii = 0; ii < self.count; ii++) {
            MyItem item = [self getItemAtIndex:(NSInteger)ii];
            NSNumber *prevPos = (NSNumber *)[from objectForKey:[NSNumber numberWithInt:item.id]];
            if ([prevPos intValue] != ii) {
                NSIndexPath *from = [NSIndexPath indexPathForItem:prevPos.intValue inSection:0];
                NSIndexPath *to = [NSIndexPath indexPathForItem:ii inSection:0];
                [self.collectionView moveItemAtIndexPath:from toIndexPath:to];
            }
        }
    } completion:nil]; …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview uicollectionviewcell

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

Google支持Android的Duo应用程序是什么意图或apis?

我们可以通过意图通过Google Duo开始新的视频通话吗?我们可以在应用内的任何特定屏幕上启动吗?

我们目前支持从我们的应用启动环聊,我们也希望添加Duo支持.

android android-intent

9
推荐指数
1
解决办法
2227
查看次数

Application类中的java.lang.VerifyError,用于一小部分用户

(这不是其他类似问题的重复,因为这只发生在一小部分用户身上,不能由我重新创建)

在我最新的发布版本中,我突然看到了班级中java.lang.VerifyError出现类似崩溃的巨大高峰Application.

这条线很简单:

Settings.init(this);
Run Code Online (Sandbox Code Playgroud)

Settings周围的便利包装类在哪里SharedPreferences.似乎在不到百分之一的用户中找不到该类.

我们无法在我的团队设备上重新创建崩溃,Google Play的发布前报告显示0错误.

这是完整的堆栈跟踪:

java.lang.VerifyError: 
at com.my_package.MyApplication.onCreate (MyApplication.java:74)
at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1036)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6321)
at android.app.ActivityThread.access$1800 (ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1861)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:158)
at android.app.ActivityThread.main (ActivityThread.java:7229)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)
Run Code Online (Sandbox Code Playgroud)

Settings.init:

public static void init(Context context) {
    sPrefs = PreferenceManager.getDefaultSharedPreferences(context);
}
Run Code Online (Sandbox Code Playgroud)

我应该补充一点,这个问题在我的单个生产应用程序版本上发生了97%,我无法重新创建运行该版本或任何版本的崩溃,但似乎只有该版本受到影响,到目前为止所有版本都有没有这个崩溃.

但是,我仍然看到该应用版本在Google Play中崩溃,我担心它可能会在未来的版本中出现,因为我认为我在这个版本中没有改变任何方式与堆栈跟踪相关.

我得到的这次崩溃的统计数据

crash android verifyerror android-application-class

7
推荐指数
1
解决办法
291
查看次数

UIACollectionView单元格与visibleCells

我正在尝试使用xcode 4.5中的自动化编写测试脚本.

我有一个UICollectionView,我想点击一些当前不可见的单元格.

根据文档,我应该cells返回集合视图中的所有单元格,并visibleCells仅返回当前可见的单元格.

相反,我所看到的是,单元格只返回当前可见的单元格,调用visibleCells会停止脚本 'undefined' is not a function (evaluating 'collection.visibleCells()')

var target = UIATarget.localTarget();
var collection = target.frontMostApp().mainWindow().collectionViews()[0];

UIALogger.logMessage("Looking in collection: " + collection);
UIALogger.logMessage("Cells: " + collection.cells() + " length " + collection.cells().length);
UIALogger.logMessage("Visible cells: " + collection.visibleCells());
Run Code Online (Sandbox Code Playgroud)

上面的代码返回正确的UICollectionView第二个日志行打印:

Cells: [object UIAElementArray] length 12
Run Code Online (Sandbox Code Playgroud)

虽然我在集合视图中有100个项目,但第三个日志行崩溃了脚本.

这是一个文档/ UIACollectionView错误吗?

任何想法如何告诉自动化滚动,直到它看到一个名为"我的手机"的单元格?我已经尝试过使用someCell.scrollToVisible,但是我需要让单元格来做这件事,而我不会因为我无法从单元格中获取它.

编辑:

正如Jonathan所建议的那样,我实现了一个滚动查找函数.这是一个特定的实现,所以你可能需要调整isCellWithName.我也想添加一个休息时间,以防我们在while循环中找不到所需的单元格,如果有人有想法,请随时编辑它.

function isCellWithName(cell, name) {
    return (cell.staticTexts()[0].name() == name);
}

function getCellWithName(array, name) …
Run Code Online (Sandbox Code Playgroud)

uiscrollview ios ios-ui-automation uicollectionview

5
推荐指数
1
解决办法
3816
查看次数