3

前回の「なんでAndroidってこんなにめちゃめちゃなの?」でごめんなさい。質問。ここでの小さな問題に圧倒されています。私はチャーを作ろうとしています。EditText のカウンター:

final TextWatcher mTextEditorWatcher = new TextWatcher() {
        EditText edit_text = (EditText) findViewById(R.id.editText1);
        TextView text_view = (EditText) findViewById(R.id.textView1);

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    };

    public void onTextChanged(CharSequence s, int start, int before, int count) {
       //This sets a textview to the current length
       text_view.setText(String.valueOf(s.length()));
    };

    //public void afterTextChanged1(Editable s) {
    //};

    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    };
};

そして、クラッシュします。これが、以前に EditText/TextView クレームについて実際に質問した理由です。このコードの何が問題なのかわかりませんか?

LogCat ログ:

04-23 00:57:46.029: E/AndroidRuntime(347): Uncaught handler: thread main exiting due to uncaught exception
04-23 00:57:46.109: E/AndroidRuntime(347): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.dtype.writer/com.dtype.writer.DTypeActivity}: java.lang.NullPointerException
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.os.Looper.loop(Looper.java:123)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.ActivityThread.main(ActivityThread.java:4363)
04-23 00:57:46.109: E/AndroidRuntime(347):  at java.lang.reflect.Method.invokeNative(Native Method)
04-23 00:57:46.109: E/AndroidRuntime(347):  at java.lang.reflect.Method.invoke(Method.java:521)
04-23 00:57:46.109: E/AndroidRuntime(347):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-23 00:57:46.109: E/AndroidRuntime(347):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-23 00:57:46.109: E/AndroidRuntime(347):  at dalvik.system.NativeStart.main(Native Method)
04-23 00:57:46.109: E/AndroidRuntime(347): Caused by: java.lang.NullPointerException
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.Activity.findViewById(Activity.java:1612)
04-23 00:57:46.109: E/AndroidRuntime(347):  at com.dtype.writer.DTypeActivity$1.<init>(DTypeActivity.java:29)
04-23 00:57:46.109: E/AndroidRuntime(347):  at com.dtype.writer.DTypeActivity.<init>(DTypeActivity.java:28)
04-23 00:57:46.109: E/AndroidRuntime(347):  at java.lang.Class.newInstanceImpl(Native Method)
04-23 00:57:46.109: E/AndroidRuntime(347):  at java.lang.Class.newInstance(Class.java:1479)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
04-23 00:57:46.109: E/AndroidRuntime(347):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
04-23 00:57:46.109: E/AndroidRuntime(347):  ... 11 more
04-23 00:57:46.128: E/dalvikvm(347): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

このソリューションはhereから借用したもので、Cameron Ketcham はmEditText.addTextChangedListener(mTextEditorWatcher);TextWatcher を EditText に設定するために使用することを提案しています。それが私の問題の核心かもしれませんか?

2012 年 4 月 24 日更新: この問題に対する有効な解決策はまだ見つかっていません。

4

2 に答える 2

4

それはあなたが入れたからだと思います:

mTextView = (EditText) findViewById(R.id.textView1);

必要な場合:

mTextView = ( TextView ) findViewById(R.id.textView1);

于 2012-05-15T19:22:15.993 に答える
2

そのように動作するはずです。

private TextWatcher mTextEditorWatcher;
private EditText mEditText; 
private TextView mTextView;

public void onCreate() {
    mEditText = (EditText) findViewById(R.id.editText1);
    mTextView = (EditText) findViewById(R.id.textView1);
    mTextEditorWatcher = new TextWatcher() {

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    };

    public void onTextChanged(CharSequence s, int start, int before, int count) {
       //This sets a textview to the current length
       mTextView.setText(String.valueOf(s.length()));
    }

    //public void afterTextChanged1(Editable s) {
    //}

    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }
  };
  mEditText.addTextChangedListener(mTextEditorWatcher);
}
于 2012-04-22T21:12:50.790 に答える