2017-06-20 53 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);'返回完成...但现在它工作:) –