从另一个类

时间:2015-10-22 23:57:07

标签: android class methods nullpointerexception

Android编程新手 - 为不正确的行话道歉。

我的应用可以保存输入到EditText字段的数据。 然后,它可以加载此数据并将此数据的值设置为String Variables。 然后它使用这些字符串预先形成POST HTTP请求。

我正在使用openFileInputopenFileOutput

加载/保存字符串文件

我创建了方法:

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方法没有问题......

有什么想法吗?

如果需要,可以发布更多代码。

1 个答案:

答案 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());