小编vag*_*l13的帖子

在DialogFragment类中调用getActivity()的一般准则

如前所述这里:

" be careful to call getActivity() only when the fragment is attached to an activity. When the fragment is not yet attached, or was detached during the end of its lifecycle, getActivity() will return null."


关于在DialogFragment中调用getActivity(),我有几个问题.

  1. 什么是不同的场景,在这些场景下,DialogFragment可能意外地与其父Activity分离或者没有在第一个位置附加?问题是我在onPositiveButtonClick的监听器中调用了getActivity()并且收到了几个崩溃报告(Null指针异常).我无法重现崩溃,屏幕方向似乎没有成功.

  2. 关于如何使用具有最小损害的getActivity()的一些推荐指南是什么?我已经阅读了其他一些建议的stackoverflow帖子

    a)覆盖onAttach()方法.
    public void onAttach(Activity activity) { super.onAttach(activity); mActivity = activity; }

    我更喜欢这个,因为它保留了Activity的一个实例.此外,我如何确保活动的本地实例永远不会设置为null.想在使用它之前了解它的优点和缺点.

    b)是否会使用接口帮助将onClick()实现委托给调用活动?如果有,怎么样?


如果所有这些都是不可避免的,我看不到比让应用程序崩溃更好的选择.我无法显示toast,因为getActivity()为null并且会避免让onClick操作无提示失败.

任何指针都将非常感激.谢谢!

android android-fragments android-dialogfragment android-fragmentactivity

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

最小的MOVES排序数组?

给定一个不同整数的数组.你可以从数组中删除一个元素并将其附加到它的末尾.这是一个MOVE并计为一个MOVE操作.找到排序数组所需的最小移动数.

sorting algorithm amazon

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

在派生类中声明的虚函数

这里我在Derived类中声明了另一个虚函数.

#include <iostream>

using namespace std;

class A{
    string s;
    public:
    A(const string& name) : s(name){}
     virtual void f1(){cout << "f1 of base class" << endl;};
};

class B : public A{
    string p;
    public:
    B(const string& name) : A(name){}
    virtual void f2(){cout << "virtual function of derived class" << endl;}
    void f1(){cout << "f1 of derived class";}
};

int main() {
    A* arr[] = {new A("John"),new B("Bob")};
    arr[0]->f1();
    arr[1]->f1();
    arr[1]->f2();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

函数调用arr [1] - > f2() …

c++ virtual-functions inlining

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