繁体   English   中英

Android java:传递两个活动之间的路径

[英]Android java :Passing with the path between two activity

我是android开发的新手,目前正在开发CalendarNote应用。

  1. 通过选择日期创建一个文件夹,文件夹名称为日期。
  2. 选择日期并成功创建日期后,将文件夹移至文本界面。
  3. 创建文件夹和文本界面是两种不同的活动。
  4. 现在,问题是我想将txt文件保存到我刚刚创建的文件夹中。
  5. 我尝试从选择日期到文本活动之间获取getText,但未成功。

我做了很多研究,并尝试了很多相关代码,但仍然没有成功。 任何人都可以帮助我或给我一些指导,以便我不会迷路。 谢谢。

以下是创建文件夹的代码:

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();
        }

    });

}

dateN是创建文件夹的关键。

[2014年3月15日更新]实际上,在选择日期(DatePickerActivity)>>选择注释类型(SelectTypeActivity)>>写txt文件(WriteNoteActivity)之后,您好。 这是过程。 到目前为止,我使用@Hamid Shatu建议这确实很有帮助! 但是我必须将意图SelectTypeActivity.class更改为WriteNoteActivity.class,这样才能成功,如何无需跳过SelectTypeActivity也能够做到的呢? =)对不起,我的英语不好。

通过Intent putExtra()方法将文件夹路径传递给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();
}

使用SelectTypeActivity类中的getStringExtra()方法从Extra检索该文件夹路径,如下所示...

//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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM