androidjava:在两个活动之间传递路径

androidjava:在两个活动之间传递路径,java,android,android-edittext,Java,Android,Android Edittext,我是android开发新手,目前正在开发CalendarNote应用程序 按选择创建文件夹的日期,文件夹名称为日期 选择日期并成功创建日期文件夹后,移动到 文本界面 创建文件夹和文本界面是两种不同的活动 现在,问题是我想将txt文件保存到 我刚刚创建了一个 我尝试从我选择的日期到文本活动获取文本,但是 不成功 我做了很多研究,尝试了很多相关的代码,但仍然没有成功。 任何人都可以帮助我或给我一些指导,这样我就不会迷路了。谢谢 以下是创建文件夹代码: btn_cFolder.setOnClickLi

我是android开发新手,目前正在开发CalendarNote应用程序

  • 按选择创建文件夹的日期,文件夹名称为日期
  • 选择日期并成功创建日期文件夹后,移动到 文本界面
  • 创建文件夹和文本界面是两种不同的活动
  • 现在,问题是我想将txt文件保存到 我刚刚创建了一个
  • 我尝试从我选择的日期到文本活动获取文本,但是 不成功
  • 我做了很多研究,尝试了很多相关的代码,但仍然没有成功。 任何人都可以帮助我或给我一些指导,这样我就不会迷路了。谢谢

    以下是创建文件夹代码:

    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也能做到这一点呢?=)