小编Til*_*ill的帖子

Facebook SDK 4.7.0记录AppEventsLogger的ClassNotFoundException

我通过Gradle在我的Android应用程序中集成了FB SDK,用于登录和跟踪事件.登录工作正常,但是一旦我尝试记录应用程序事件,logcat每15秒就会向我显示一个异常:

D/com.facebook.appevents.AppEventsLogger: Got unexpected exception: java.lang.ClassNotFoundException: com.facebook.a.b
Run Code Online (Sandbox Code Playgroud)

它会被PersistedEvents的readAndClearStore()方法抛出

这是我记录事件的代码:

AppEventsLogger logger = AppEventsLogger.newLogger(this);
    Bundle parameters = new Bundle();
    parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "EUR");
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, id);

    logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT,
            1.99,
            parameters);
Run Code Online (Sandbox Code Playgroud)

我的意思是com.facebook.a.b看起来像是一个问题.但是在FB SDK文档中,他们明确指出您不需要输入任何proguard规则来使其工作.当我不缩小我的应用程序时,如果我从github下载sdk并将其作为模块包含,此错误也会显示.

android facebook facebook-android-sdk facebook-sdk-4.x

24
推荐指数
1
解决办法
1083
查看次数

Fragment中的Listview导致内存泄漏

我有一个FragmentActivity,其中FragmentMediaOverview包含一个MediaItemViews 列表(每个都有一个imageview和一些文本),然后点击其中一个打开细节片段的项目.现在当我从列表到细节片段多次返回(通过后退按钮)和向前(单击listitem)时,我最终遇到了OOM-Errors.我使用SoftReferences作为listitems中的位图以及详细信息片段中的位图.根据MAT,有大量的MediaItemViews和FragmentMediaOverview实例,但我无法弄清楚为什么.

我读到了这个Android:AlertDialog导致内存泄漏,但无法解决它的null问题.

这是我的代码:

FragmentMediaOverview.java

(这不是ListFragment,因为平板电脑布局MediaAdapter需要连接到gridview)

public class FragmentMediaOverview extends Fragment {
    private static String TAG = FragmentMediaOverview.class.getSimpleName();

    private MediaAdapter adapter;
    private OnMediaSelectedListener selListener;
    private ArrayList<BOObject> mediaItems;

    private ViewGroup layoutContainer;    
    private AdapterView itemContainer; // list or gridview

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(TAG, "onCreateView");
        layoutContainer = (ViewGroup) inflater.inflate(R.layout.fragment_media_overview, null);

        return layoutContainer;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity); …
Run Code Online (Sandbox Code Playgroud)

android

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

在嵌套的FragmentTabHost中切换开关后片段不可见

我在我的一个片段的布局中有一个FragmentTabHost(让我们称之为parentFragment).现在,我在parentFragment的onCreateView上以编程方式初始化tabhost中的每个片段.当创建parentFragment时,一切似乎都正常工作,它正确显示第一个选项卡的片段.

但是一旦我切换标签一次,片段就会消失(我可以看到tabhost的背景颜色,但没有tabcontent-container的内容).当我切换回它时,第一个片段也消失了.这些片段实际上是在我的日志记录显示时创建的,但它们不可见.

我认为它与(重新)创建片段有关,因为我也尝试使用带有FragmentPagerAdapter的ViewPager.在那里,我可以愉快地在前两个片段之间切换(由于setOffscreenPageLimit()== 1而预先加载),但是除此之外创建的片段(重新)也是空白的.

任何想法?

这是我的一些代码:

parentFragment的XML摘录:

...
            <android.support.v4.app.FragmentTabHost
                android:id="@android:id/tabhost"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >

                    <TabWidget
                        android:id="@android:id/tabs"
                        android:layout_width="match_parent"
                        android:layout_height="40dp"
                        android:layout_alignParentTop="true" />

                    <FrameLayout
                        android:id="@android:id/tabcontent"
                        android:layout_width="0dp"
                        android:layout_height="0dp" />

                    <FrameLayout
                        android:id="@+id/realtabcontent"
                        android:layout_below="@android:id/tabs"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
                </RelativeLayout>
            </android.support.v4.app.FragmentTabHost>
...
Run Code Online (Sandbox Code Playgroud)

parentFragment的XML摘录:

...
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(TAG, "onCreateView");
        ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.fragment_app_details_test, container, false);

            tabHost = (FragmentTabHost) layoutContainer.findViewById(android.R.id.tabhost);
        tabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("TAB1"),
                FragmentSubTab1.class, null);
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("TAB2"),
                FragmentSubTab2.class, null);
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("TAB3"),
                FragmentSubTab3.class, null);

        return layoutContainer;
    }
...
Run Code Online (Sandbox Code Playgroud)

子选项卡片段中的简单布局膨胀:

... …
Run Code Online (Sandbox Code Playgroud)

android android-tabhost android-fragments android-nested-fragment

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

RxJava2:压缩的可观察变量中的多个错误引发异常

我通过压缩并行执行多个HTTP调用。现在,其中0..n个显然可以失败。问题是,当例如2个呼叫几乎在确切的时间失败时,将处理错误1 doOnErroronErrorReturnItem但错误2会漏掉并导致异常。我认为如果错误2刚好出现而这两个onError运算符仍未完全处理错误1,就会发生这种情况。

可以使用以下简化代码来复制它:

buttonClick.flatMapSingle(action -> Single.zip(
                    Single.error(new Throwable("error 1")).delay(500, TimeUnit.MILLISECONDS),
                    Single.error(new Throwable("error 2")).delay(500, TimeUnit.MILLISECONDS),
                    (integer, integer2) -> true
            )
                    .doOnError(t -> Timber.d(t.getMessage()))
                    .onErrorReturnItem(true))
                    .subscribe();
Run Code Online (Sandbox Code Playgroud)

因此,每隔一段时间就会抛出:

D/Main: error 1
W/System.err: java.lang.Throwable: error 2
Run Code Online (Sandbox Code Playgroud)

难道不应该Single.zip只允许发出一个错误吗?有一个更好的方法吗?

rx-java rx-android rx-java2

5
推荐指数
0
解决办法
880
查看次数

可以在第三方发射器中定义小部件的行为/布局以调整大小和方向更改吗?

我似乎无法找到关于我想要编写代码的小部件的以下问题:除了Android 3.1中引入的调整大小能力之外,我希望我的小部件可以在LauncherPro或ADWLauncher等自定义启动器中调整大小.有没有办法可以定义我的小部件一旦调整大小后如何更改其布局?因此,例如,按钮A在左侧显示为2x1,但在右侧显示为3x3.此外,我希望它更改其外观/布局,因为屏幕旋转小部件大小更改(因为例如3x1在横向和纵向中具有不同的高度和宽度).

任何提示都会有所帮助.非常感谢!直到

android android-widget

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