androidjava:在两个活动之间传递路径
我是android开发新手,目前正在开发CalendarNote应用程序androidjava:在两个活动之间传递路径,java,android,android-edittext,Java,Android,Android Edittext,我是android开发新手,目前正在开发CalendarNote应用程序 按选择创建文件夹的日期,文件夹名称为日期 选择日期并成功创建日期文件夹后,移动到 文本界面 创建文件夹和文本界面是两种不同的活动 现在,问题是我想将txt文件保存到 我刚刚创建了一个 我尝试从我选择的日期到文本活动获取文本,但是 不成功 我做了很多研究,尝试了很多相关的代码,但仍然没有成功。 任何人都可以帮助我或给我一些指导,这样我就不会迷路了。谢谢 以下是创建文件夹代码: btn_cFolder.setOnClickLi
btn_cFolder.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
String dateN = edit_date.getText().toString();
new AlertDialog.Builder(DatePickerActivity.this, AlertDialog.THEME_HOLO_DARK)
.setTitle("Create Folder")
.setMessage("Confirm to create " + dateN +" folder ?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Environment.getExternalStorageDirectory();
String dateN = edit_date.getText().toString();
edit_date.setTypeface(edit_date.getTypeface(), Typeface.BOLD_ITALIC);
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/CalendarNote/" + dateN);
boolean success = true;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
Toast.makeText(getBaseContext(), "You have successfully created." , Toast.LENGTH_LONG ).show();
Intent w = new Intent(DatePickerActivity.this, SelectTypeActivity.class);
startActivity(w);
} else {
Toast.makeText(getBaseContext(), "You have Failed to create." , Toast.LENGTH_LONG ).show();
}
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(R.drawable.ic_launcher)
.show();
}
});
这是创建txt文件的代码:
public void SaveListener() {
imb_savefile = (ImageButton) findViewById(R.id.imb_savefile);
imb_savefile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
edit_date = (EditText) findViewById(R.id.edit_date);
String t = edit_title.getText().toString();
new AlertDialog.Builder(WriteNoteActivity.this, AlertDialog.THEME_HOLO_DARK)
.setTitle("Save Note")
.setMessage("Confirm to save " + t +"?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String content = edit_content.getText().toString();
String title = edit_title.getText().toString();
String dateN = edit_date.getText().toString();
boolean success = true;
try {
File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile;
targetFile = new File(sdCardDir.getCanonicalPath()
+ "/CalendarNote/"+ dateN);
File file=new File(targetFile + "/"+title+".txt");
if(!targetFile.exists()){
success = targetFile.mkdir();
}
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.seek(file.length());
raf.write(content.getBytes());
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
if (success) {
Toast.makeText(getBaseContext(), "You have successfully created." , Toast.LENGTH_LONG ).show();
} else {
Toast.makeText(getBaseContext(), "You have Failed to create." , Toast.LENGTH_LONG ).show();
}
//Toast.makeText(getBaseContext(), "Note have successfully saved." , Toast.LENGTH_LONG ).show();
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getBaseContext(), "Note Cancelled." , Toast.LENGTH_LONG ).show();
}
})
.setIcon(R.drawable.ic_launcher)
.show();
}
});
}
日期是创建文件夹的关键
[更新日期:2014年3月15日]
Hi实际在选择日期后(DatePickerActivity)>选择注释类型(SelectTypeActivity)>写入txt文件(WriteNotActivity)。这就是过程。到目前为止,我使用@Hamid Shatu建议,这真的很有帮助!但是我必须将意图SelectTypeActivity.class更改为WriteNotActivity.class这样会成功,我怎么能不跳过SelectTypeActivity也能做到这一点呢?=)
对不起,我的英语不好。通过
putExtra()
方法Intent
将文件夹路径传递到SelectTypeActivity
,如下所示
String folderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/CalendarNote/" + dateN;
File folder = new File(folderPath);
boolean success = true;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
Toast.makeText(getBaseContext(), "You have successfully created." , Toast.LENGTH_LONG ).show();
Intent w = new Intent(DatePickerActivity.this, SelectTypeActivity.class);
w..putExtra("folderpath", folderPath);
startActivity(w);
} else {
Toast.makeText(getBaseContext(), "You have Failed to create." , Toast.LENGTH_LONG ).show();
}
//File sdCardDir = Environment.getExternalStorageDirectory();
//File targetFile;
//targetFile = new File(sdCardDir.getCanonicalPath()
+ "/CalendarNote/"+ dateN);
String folderPath = getIntent().getStringExtra("folderpath");
File file=new File(folderPath + "/"+title+".txt");
使用SelectTypeActivity
类中的getStringExtra()
方法从Extra
检索文件夹路径,如下所示
String folderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/CalendarNote/" + dateN;
File folder = new File(folderPath);
boolean success = true;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
Toast.makeText(getBaseContext(), "You have successfully created." , Toast.LENGTH_LONG ).show();
Intent w = new Intent(DatePickerActivity.this, SelectTypeActivity.class);
w..putExtra("folderpath", folderPath);
startActivity(w);
} else {
Toast.makeText(getBaseContext(), "You have Failed to create." , Toast.LENGTH_LONG ).show();
}
//File sdCardDir = Environment.getExternalStorageDirectory();
//File targetFile;
//targetFile = new File(sdCardDir.getCanonicalPath()
+ "/CalendarNote/"+ dateN);
String folderPath = getIntent().getStringExtra("folderpath");
File file=new File(folderPath + "/"+title+".txt");
匿名类是Java的一个很好的特性,当您进入多个级别时,它会使代码很难阅读并导致疯狂的缩进。尝试将此代码分解为多个方法。是否可以添加有关您遇到的问题的更多信息?当你尝试代码时:会发生什么?你期望发生什么?它们有何不同?如果遇到异常,请将异常与堆栈跟踪一起包含。@unholysampler我希望将txt文件保存到我创建的文件夹。@unholysampler Hi我已解决了问题,但出现了新问题。有没有建议不要跳过SelectTypeActivity?您好,谢谢您的建议,但是当我这样做时,targetFile.exists和targetFile.mkdir将变为红线。您好,实际上在选择日期之后(DatePickerActivity)>>选择注释类型(SelectTypeActivity)>>写入txt文件(WriteNotActivity)。这就是过程。到目前为止,我使用你的建议,这真的很有帮助!但是我必须将意图SelectTypeActivity.class更改为WriteNotActivity.class,这样它会成功,我怎么能不跳过SelectTypeActivity也能做到这一点呢?=)