【问题标题】:Navigation drawer fragment - TextWatcher crashes导航抽屉片段 - TextWatcher 崩溃
【发布时间】:2015-08-26 16:08:18
【问题描述】:

我正在尝试将 TextWatcher 方法添加到通过导航抽屉加载的片段:

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }

    testMethod();
}

public void testMethod() {
    EditText tv_filter = (EditText) getActivity().findViewById(R.id.editText);
    tv_filter.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
        }
        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after) {
        }
        public void onTextChanged(CharSequence s, int start,
                                  int before, int count) {
            Toast.makeText(getActivity(), "INPUT TRACKED", Toast.LENGTH_SHORT).show();
        }
    });
}

问题是,每当我加载这个片段时,应用程序就会崩溃并显示以下 logcat 消息:

    08-26 12:00:26.553  12842-12842/fest.test.dk.fest E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: fest.test.dk.fest, PID: 12842
java.lang.NullPointerException
at fest.test.dk.fest.menuFragment.testMethod(menuFragment.java:74)
at fest.test.dk.fest.menuFragment.onCreate(menuFragment.java:66)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1766)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:917)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)

通常,logcat 的错误会非常具体,但我无法弄清楚这个错误的确切含义。

【问题讨论】:

  • 会添加括号帮助! (EditText) (getActivity().findViewById(R.id.editText))。忽略它是否愚蠢:)
  • id editText 在哪里声明?

标签: android android-fragments android-studio textwatcher


【解决方案1】:

getActivity() 可能为空。转移 testMethod 的调用。覆盖片段中的 onAttach 并从那里调用它。再次阅读片段生命周期。

【讨论】:

  • getActivity() 不为空,因为 toast 工作正常(如果我删除了 textwatcher)
猜你喜欢
  • 1970-01-01
  • 2015-12-28
  • 2018-01-16
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多