Android编程新手 - 为不正确的行话道歉。
我的应用可以保存输入到EditText
字段的数据。
然后,它可以加载此数据并将此数据的值设置为String Variables。
然后它使用这些字符串预先形成POST HTTP请求。
我正在使用openFileInput
和openFileOutput
我创建了方法:
public String LoadMethod()
public String SaveMethod()
当Method与调用它的Activity属于同一个类时,这些方法可以正常工作。
我的问题是2个活动需要能够运行public String LoadMethod()
所以我做的是创建2个用于加载和保存数据的java类文件。 有些评论是在我试图调试的文件中。
LoadUserDetails.java
public class LoadUserDetails extends AppCompatActivity {
public static String sSavedName;
public static String sSavedCompany;
public static String sSavedPhone;
public static String sSavedCarRegistration;
String sNameFile = "name_file";
//private Context context;
public String LoadMethod(){
/* OPEN DETAILS FROM INTERNAL STORAGE*/
//context = getActivity();
/*NAME*/
try {
String sOpenName;
FileInputStream fileInputStream = openFileInput("name_file");
InputStreamReader inputStreamReaderName = new InputStreamReader(fileInputStream);
BufferedReader bufferedReaderName = new BufferedReader(inputStreamReaderName);
StringBuffer stringBufferName = new StringBuffer();
while ((sOpenName = bufferedReaderName.readLine()) != null) {
stringBufferName.append(sOpenName + "\n");
}
sSavedName = (stringBufferName.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
重复打开其他3个字符串文件的代码。
我使用以下代码从UserDetails.java
活动和MainActivity.java
活动启动此方法:
//Load User Details
LoadUserDetails load = new LoadUserDetails();
load.LoadMethod();
这是我在logcat中遇到的错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.visitorrego.oem.smartsigninvisitor/com.visitorrego.oem.smartsigninvisitor.UserDetails}: java.lang.NullPointerException
..........
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.openFileInput(ContextWrapper.java:191)
at com.visitorrego.oem.smartsigninvisitor.LoadUserDetails.LoadMethod(LoadUserDetails.java:31)
at com.visitorrego.oem.smartsigninvisitor.UserDetails.onCreate(UserDetails.java:37)
我尝试使用Context
并且ContextWrapper
错误消失但我仍然得到其他错误:(
我知道它与从不同的类使用OpenFileInput调用方法有关。 我在webrequest类中调用postrequest方法没有问题......
有什么想法吗?
如果需要,可以发布更多代码。
答案 0 :(得分:0)
我可以从您的代码中了解到,类LoadUserDetails不是一个活动, 所以你可能需要改变
public class LoadUserDetails extends AppCompatActivity
到
public class LoadUserDetails
从您正在呼叫的页面发送上下文作为参数。因为上下文通常是onCreate()(通常用于活动)初始化。
该功能将
public String LoadMethod(Context context){
....
FileInputStream fileInputStream = context.openFileInput("name_file");
....
}
你可以通过
来调用它 LoadUserDetails load = new LoadUserDetails();
load.LoadMethod(getApplicationContext());