Android 将变量从活动传递到非活动类

Android 将变量从活动传递到非活动类,android,android-activity,filenames,filepath,Android,Android Activity,Filenames,Filepath,在我的主要活动中,我有这个部分,其中包含文件路径和choosen文件的文件名 public class MainActivity extends Activity implements OnClickListener{ private static File selectedFile; public static File Filename; @Override protected void onCreate(Bundle savedInstanceState) { super.o

在我的主要活动中,我有这个部分,其中包含文件路径和choosen文件的文件名

public class MainActivity extends Activity implements OnClickListener{

private static File selectedFile;

public static File Filename;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(resultCode == RESULT_OK) {

        switch(requestCode) {

        case REQUEST_PICK_FILE:

            if(data.hasExtra(FilePicker.EXTRA_FILE_PATH)) {

                selectedFile = new File
                        (data.getStringExtra(FilePicker.EXTRA_FILE_PATH));
                filePath.setText(selectedFile.getPath());  
            }
            break;
        }
    }
} //onActivityResult

//and i added this so that I will be able to save the filepath and access it from my CoordinatesXmlParser.java (a non-activity class)

public void Filename () {
String filename = selectedFile.toString();

//return selectedFile;
}
}
然后在我的CoordinatesXmlParser.java上,我有以下部分:

File file = MainActivity.Filename;
file.toString();

//String file = Environment.getExternalStorageDirectory() + "/XML/coordinates.xml";
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
FileInputStream fis = new FileInputStream(file);
parser.setInput(new InputStreamReader(fis));

问题:它正在抛出NullPointException。如何将文件路径从MainActivity.java传递到CoordinatesXmlParser.java?TIA

我认为这行将抛出一个NullPointException

File File=MainActivity.Filename

如果要将文件路径从MainActivity.java传递到CoordinatesXmlParser.java,可以使用应用程序类来实现

在应用程序类中,可以编写两个方法

 private String fileName;


public String getFileName() {
    return fileName;
}


public void setFileName(String fileName) {
    this.fileName = fileName;
}

然后在MainActivity中调用setFileName方法,在CoordinatesXmlParser中调用get getFileName方法。

它返回Null,因为在任何时候都为变量Filename赋值(顺便说一下,这与模式相反:变量不应该以大写字母开头)

然后

File file = MainActivity.getFilename();
file.toString();

此外,重要的是要注意,这根本不是一个好主意。只有在确定已调用“onActivityResult”后才能调用getFilename(),否则它将始终引发NullPointerException。

MainActivity
中使用
CoordinatesXmlParser
的地方,请原谅?我似乎不明白你的问题。我的意思是你在哪个类中使用
CoordinatesXmlParser
类来解析xml?是的,先生。对不起,如果我没有回答这个问题。
File file = MainActivity.getFilename();
file.toString();