簡體   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