Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:Sting返回空指针异常_Java_Android_Eclipse_Nullpointerexception_Android Edittext - Fatal编程技术网

Java Android:Sting返回空指针异常

Java Android:Sting返回空指针异常,java,android,eclipse,nullpointerexception,android-edittext,Java,Android,Eclipse,Nullpointerexception,Android Edittext,我的记事本代码有问题。我制作了一个带有保存按钮的记事本,它首先显示我们在点击按钮时输入的字符串。为此,我创建了一个名为“linededitext.java”的类,但当我运行代码时,得到了一个名为“Null指针异常”的异常。这是我的密码,请告诉我该怎么做?提前谢谢 MainActivity.java public class NotePadActivity extends Activity { LinedEditText noteTxt; Button re

我的记事本代码有问题。我制作了一个带有保存按钮的记事本,它首先显示我们在点击按钮时输入的字符串。为此,我创建了一个名为“linededitext.java”的类,但当我运行代码时,得到了一个名为“Null指针异常”的异常。这是我的密码,请告诉我该怎么做?提前谢谢

MainActivity.java

 public class NotePadActivity extends Activity {

        LinedEditText noteTxt;


        Button remind, save, cancel;
            String str="";


        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.notepad);

noteTxt=(LinedEditText)findViewById(R.id.noteTxt);


            save = (Button) findViewById(R.id.saveBtn);
            cancel = (Button) findViewById(R.id.cancelBtn);

            save.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String str = (noteTxt.getText()).toString();
                    Log.i("Notepad String:", "" + str);
                }
            });
save.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String str = noteTxt.getText().toString();// GETTING EXCEPTION HERE
                Log.i("Notepad String:", "" + str);
            }
        });
linededitext.java

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.EditText;

public class LinedEditText extends EditText {
    private Rect mRect;
    private Paint mPaint;

    // we need this constructor for LayoutInflater
    public LinedEditText(Context context, AttributeSet attrs) {
        super(context, attrs);

        mRect = new Rect();
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        // mPaint.setColor(R.color.edit_note_line); // SET YOUR OWN COLOR HERE
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // int count = getLineCount();

        int height = getHeight();
        int line_height = getLineHeight();

        int count = height / line_height;

        if (getLineCount() > count)
            count = getLineCount();// for long text with scrolling

        Rect r = mRect;
        Paint paint = mPaint;
        int baseline = getLineBounds(0, r);// first line

        for (int i = 0; i < count; i++) {

            canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
            baseline += getLineHeight();// next line
        }

        super.onDraw(canvas);
    }
}
例外情况是

09-28 11:26:57.494: E/AndroidRuntime(507): FATAL EXCEPTION: main
09-28 11:26:57.494: E/AndroidRuntime(507): java.lang.NullPointerException
09-28 11:26:57.494: E/AndroidRuntime(507):  at com..NotePadActivity$2.onClick(NotePadActivity.java:49)
09-28 11:26:57.494: E/AndroidRuntime(507):  at android.view.View.performClick(View.java:2485)
09-28 11:26:57.494: E/AndroidRuntime(507):  at android.view.View$PerformClick.run(View.java:9080)
09-28 11:26:57.494: E/AndroidRuntime(507):  at android.os.Handler.handleCallback(Handler.java:587)
09-28 11:26:57.494: E/AndroidRuntime(507):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-28 11:26:57.494: E/AndroidRuntime(507):  at android.os.Looper.loop(Looper.java:123)
09-28 11:26:57.494: E/AndroidRuntime(507):  at android.app.ActivityThread.main(ActivityThread.java:3683)
09-28 11:26:57.494: E/AndroidRuntime(507):  at java.lang.reflect.Method.invokeNative(Native Method)
09-28 11:26:57.494: E/AndroidRuntime(507):  at java.lang.reflect.Method.invoke(Method.java:507)
09-28 11:26:57.494: E/AndroidRuntime(507):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-28 11:26:57.494: E/AndroidRuntime(507):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-28 11:26:57.494: E/AndroidRuntime(507):  at dalvik.system.NativeStart.main(Native Method)

为LinedEditText类添加所有三个默认构造函数。它可能会解决你的问题

public LinedEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

}

public LinedEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    mRect = new Rect();
    mPaint = new Paint();
    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);

}

public LinedEditText(Context context) {
    super(context);

}
您已经在此处为TextView定义了id noteTxt。
因此,请更改LinedItemText视图的id。。
代码相同。。
linededitext noteEdt;
noteEdt=(linededitext)findViewById(R.id.noteEdt);

您是否在主活动中声明noteTxt?并获取对其的引用?请在此处添加主活动代码。。。。我想你忘了在MainActivity中声明noteTxt。请阅读堆栈跟踪。异常发生在NotePadActivity.java的第49行。这一行有空的东西。这一行代码是什么?可能与包名有关,请确保在xml中传递给
linededitext
的包名应该是正确的。能否检查
noteTxt=(linededitext)行后noteTxt的值是否为findViewById(R.id.noteTxt)是否为空?非常好的建议。@Brijesh Patel:完成了。如何在MainActivity.java中声明该视图?我在MainActivity.java中的声明是否正确?因为现在我得到了异常09-28 12:09:05.823:E/AndroidRuntime(810):java.lang.RuntimeException:无法启动活动组件信息{com.ashish.ashish/com.ashish.ashish.NotePadActivity}:java.lang.ClassCastException:android.widget.textView其他一切都应该保持不变。这基本上是构造函数重载。您可以将初始化代码(超级调用后的代码)复制到所有三个构造函数,或者在两个构造函数中使用
this(context,null,0)
this(context,attrs,0)
将调用传递给一个构造函数。在这种情况下,初始化代码将进入
public linededitext(上下文上下文、属性集attrs、int defStyle)
中。使用布局xml和NotepadActivity(ctrl+l输入49)编辑您的问题,该行仅在此处发布我。已工作!!!!!!谢谢你,伙计!!!!!在过去的4个小时里,我像个白痴一样工作!!!谢谢:D
public LinedEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

}

public LinedEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    mRect = new Rect();
    mPaint = new Paint();
    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);

}

public LinedEditText(Context context) {
    super(context);

}
    you already defined id noteTxt for TextView here.

      <TextView
                android:id="@+id/noteTxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginTop="25dp"
                android:layout_weight="0.7"
                android:text="Note"
                android:textAlignment="center"
                android:textColor="@android:color/white"
                android:textSize="20dp" >
            </TextView>

     So change id for LinedEditText view..

     <com.kalnirnay.kalnirnay.LinedEditText
            android:id="@+id/noteEdt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/lin"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_marginTop="25dp"
            android:gravity="start"
            android:height="200dp" >
        </com.kalnirnay.kalnirnay.LinedEditText>
same in code..
   LinedEditText noteEdt;
                  noteEdt=(LinedEditText)findViewById(R.id.noteEdt);