I’ve been working on an Android app in Eclipse, and it’s gradually grown in complexity to the point where I find it difficult to locate individual classes in the Package explorer.
Java isn’t my strong point, I come from a Visual Studio/C Sharp background, so my first thought was to move logical groups of classes into new packages, a bit like creating a new code folder in Visual Studio.
I created a new package, com.mycompany.myapp.activities and dragged all the Activity.java files into here.
The whole thing went pretty badly, I got tons of import errors, resources failed to build, and so on. The auto refactor tool messed up my Manifest file pretty badly too. It just doesn’t seem like it was designed to work that way – I ended up moving them all back, and wasted two hours fixing it.
So my question is, does Eclipse have some way to organise .java files into logical subfolders without having to create new packages for them? I’d like to make a folder for ‘Data Model’, one for ‘Activities’, one for ‘Interfaces’ and so on.
How would I go about doing this? Or am I thinking about this the wrong way?
AFAIK, no. You just need to fix up stuff related to moving your code into packages.
Your app’s
R.javais generated into your application package (com.mycompany.myapp), and any classes in that same package getRvia auto-import. Code residing in other packages needs to import that class (e.g.,import com.mycompany.myapp.R). Hence, if you refactor a class from your app’s package to a sub-package, you need to add the import.That seems unlikely, as resources know nothing about Java packages. However, without any details, it is difficult to provide you with concrete assistance.
You would need to adjust your
<activity>elements to ensure they point to the newly-repackaged classes. Ditto for any other components that you repackage (e.g., services). Beyond that, without any details, it is difficult to provide you with concrete assistance.Certainly, moving activities into other packages is supported. Whether the ADT plugin handles all aspects of it with aplomb is another issue. If you come up with concrete repeatable scenarios where the ADT plugin is not doing the right thing, file an issue at http://b.android.com.