gpt4 book ai didi

java - NullPointerException - onPause()

转载 作者:行者123 更新时间:2023-12-01 19:09:42 27 4
gpt4 key购买 nike

这非常简单,我希望能够解决,而我只是一个新手。

我的屏幕上有多个选项卡。当选择另一个选项卡时,以下代码应读取文本输入并将其值分配给共享首选项。但是,每当我更改到另一个选项卡时,我的代码都会失败并出现 NullPointerException - 我相信我已将其跟踪到下面代码的 onPause() ,并且我相信这是因为我无法正确传递变量中的数据。

感谢任何指点!

package com.androidbook.epcsn;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

@SuppressWarnings("unused")
public class jobActivity extends Activity {

public static final String SN_PREFERENCES = "SiteNotePrefs";

SharedPreferences mPrefSettings;
String jobID;
String jobAddress ;
String jobPostcode ;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.joblayout);

final SharedPreferences mPrefSettings = getSharedPreferences (SN_PREFERENCES, Context.MODE_WORLD_WRITEABLE);

initjobID();
initjobaddress();
initjobpostcode();
}

private void initjobpostcode() {
EditText jobPostcode = (EditText)findViewById(R.id.jobPostcodeText);
}

private void initjobaddress() {
EditText jobAddress = (EditText)findViewById(R.id.jobAddressText);
}

private void initjobID() {
EditText jobID = (EditText)findViewById(R.id.jobIDText);
}

@Override
protected void onPause(){
super.onPause();

String strjobID = jobID;
String strjobAddress = jobAddress;
String strjobPostcode = jobPostcode;

Editor editor = mPrefSettings.edit();
editor.putString("jobID", strjobID);
editor.putString("jobAddress", strjobAddress);
editor.putString("jobPostcode", strjobPostcode);
editor.commit();
}
}

最佳答案

您在 init 方法中为局部变量设置值,而不是按预期设置类属性,例如:

EditText jobID;

// Then later... it's clobberin' time.
private void initjobID() {
EditText jobID = (EditText)findViewById(R.id.jobIDText);
}

属性jobIDshadowed通过方法中声明的本地 jobID

(Java 约定将方法命名为 initJobId,属性命名为 jobId)。

要在 init 方法中设置实例属性,请删除本地声明并使用此模式:

EditText jobID;
private void initjobID() {
jobID = (EditText)findViewById(R.id.jobIDText);
}

关于java - NullPointerException - onPause(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728353/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com