2015-09-09 80 views
-2

我有一個應用程序內置兩個活動。 主要活動(活動1),使用某個按鈕,使用startActivityforResult將您帶到活動2。完成()將不會從活動2收回到活動1

活動2是通過點擊它選擇一些文件的文件選擇器。 一旦選擇了文件,我希望它將數據(所選文件路徑)作爲字符串發送回活動1並返回到活動1.因此,活動1將對文件執行某些操作(如Activity 1的onActivityResult)。

我用一個簡單的onListItemClick實現(文件選擇使用列表視圖來顯示從中選擇文件的列表)。

而且在選擇的確是一個文件(由「吐司」輸出到用戶驗證)的情況。

有一個本應發回的數據,並把您帶回到活動1.

這裏一結束()方法是爲活動2的onListItemClick方法的代碼。如果需要更多的,告訴我,我會加入活動的其餘部分):

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
String filename = (String) getListAdapter().getItem(position); 
if (path.endsWith(File.separator)) 
{ 
filename = path + filename;System.out.println("Ends with file separator\n"); 
} 
else 
{ 
     filename = path + File.separator + filename;System.out.println("No file separator\n"); 
} 
if (new File(filename).isDirectory()) 
{ 
     Intent intent = new Intent(this, ListFileActivity.class); 
     intent.putExtra("path", filename); 
     startActivity(intent);//re-do this activity, to enter the directory 
} 
else 
{ 
     File F=new File(filename); 
     Toast.makeText(this, filename + " is not a directory, file chosen!", Toast.LENGTH_LONG).show(); 
     String P=F.getAbsolutePath(); 
     System.out.printf("---------------Absolute directory is %s\n",P); 
     Intent ResultIntent=new Intent(); 
     ResultIntent.putExtra("Address",filename); 
     setResult(Activity.RESULT_OK,ResultIntent); 
     finish(); 
} 
} 

謝謝大家對你的幫助, 朱利葉斯

+2

「但它不這樣做」....它做什麼**它呢?另外,你是否在'startActvitiyForResult()'之後的'Activity1'中調用'finish()'? – codeMagic

+0

通過使用'startActivity(intent);'一遍又一遍地堆疊活動。 – njzk2

+0

當你從Activity2啓動Activity2時,添加FLAG_ACTIVITY_SINGLE_TOP並實現onNewIntent。你不想啓動多個Activity2,你必須在這個實例中處理所有的目錄導航。然後當你調用完成時,它會將結果返回到Activity1。 –

回答

1

假設你已經公佈了Activity1代碼,當你做finish()它正在完成Activity1不是Activity2

+0

@Julius onListItemClick寫的是什麼類? –

+0

該活動poated是活動2。 – Julius