2017-06-20 63 views
0

如何更換運行應用程序(主要活動文件)的一些文件,如文件裏面,替換佈局文件和java文件夾(機器人工作室)

/src/main/java/[com.package.name ] /home.java /src/main/res/layout/home.xml

與其他文件:

/src/main/assets/home.java /SRC /主/ assets/home.xml

我已經試過:

protected void onPostExecute(String result) { 
    alertDialog.setMessage(result); 
    alertDialog.show(); 

    if (result.length() == 5) { 
     String sourcePath1 = "/src/main/assets/activity_home.xml"; 
     File source1 = new File(sourcePath1); 
     String sourcePath2 = "/src/main/assets/home.java"; 
     File source2 = new File(sourcePath2); 

     String destinationPath1 = "/src/main/res/layout/activity_home.xml"; 
     File destination1 = new File(destinationPath1); 
     String destinationPath2 = "/src/main/java/cz/oscio/oscioosp/home.java"; 
     File destination2 = new File(destinationPath2); 
     try { 
      FileUtils.copyFile(source1, destination1); 
      FileUtils.copyFile(source2, destination2); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

,但它不工作,我懷疑錯誤的文件路徑。如果我嘗試:

getAssets().open("activity_home.xml") //Cannot resolve method 'getAssets()' 

,但這不會在/src/main/res/layout/情況下,無論如何幫...

編輯:它必須做一次 - 它會改變應用程序本身,更新的代碼。

報告:

java.io.FileNotFoundException:來源 '/src/main/assets/activity_home.xml' 不存在 在org.apache.commons.io.FileUtils.copyFile(文件實用程序。的java:636) 在org.apache.commons.io.FileUtils.copyFile(FileUtils.java:606) 在cz.oscio.oscioosp.logging.onPostExecute(logging.java:112) 在cz.oscio.oscioosp。 logging.onPostExecute(logging.java:33) at android.os.AsyncTask.finish(AsyncTask.java:651) at android.os.AsyncTask.-wrap1(AsyncTask.java) at android.os.As yncTask $ InternalHandler.handleMessage(AsyncTask.java:668) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:148)
在android.app .ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

+0

您的路徑以「/」或「./」開頭?因爲它會有不同的解釋 – Nathan

+0

我建議我的路徑始於應用程序,所以我只是從應用程序文件夾...(如C:/Users/Public/MYAPP/app/src/main/assets/home.xml),因此我用/ src/main ... –

+0

我的意思是,如果你的路徑以'/'開始,它可能(可能)會被解釋爲非相對路徑,即從你的主目錄開始。你有沒有嘗試把絕對路徑(C:/Users/Public/MYAPP/app/src/main/assets/home.xml)? – Nathan

回答

0

的堆棧跟蹤是口才:'/src/main/assets/activity_home.xml' does not exist。該文件沒有找到,因此對它的處理將引發異常。

您可以使用System.getProperty("user.dir");檢查應用程序的當前目錄。但是除非你用一些特定的方法來改變它,否則這個目錄應該是你應用程序的根目錄。

你的路徑應該是正確的(只要我可以告訴),但正如我在評論說,你不應該由/開始您的路徑,因爲路徑將被解釋爲絕對路徑,即從您的電腦根目錄開始。相反,你的路徑應該是src/main/assets/activity_home.xml

+0

謝謝,'src/main/assets/activity_home.xml'好多了:) –

+0

@Jiří不客氣。現在我意識到我應該在我的評論中更加清楚:我發佈的第一條評論指出了與此答案相同的內容(即相對路徑與絕對路徑),並且是18小時前:p祝您有美好的一天! – Nathan

+0

Nah我一開始並沒有檢查我的條件,並且已經認爲我的字符串錯了......甚至認爲它是錯誤的,起初沒有任何工作,因爲假如條件(儘管我仍然不知道爲什麼返回false,但'.lenght()'幫助...導致System.out.println(result.lenght());'返回5和'System.out.println(result);'返回完成...但現在它工作:) –