1

我想更改我的 android 应用程序的结构以将活动放在名为活动的子文件夹中。所以,我的代码结构会变成

com.example.myapp.activities.MainActivity

并且所有活动都将驻留在com.example.myapp.activities

我该如何做到这一点?此外,必须在清单中进行哪些更改才能使其正常工作?我将如何从其他活动中访问其他活动类?

<activity
    android:name=".activities.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

编辑:我通过拖放文件夹中的活动来实现这一点,但现在我收到此错误setContentView(R.layout.main);无法解析 main 或不是字段

4

2 回答 2

1

如果您将所有活动组织在同一个包中,那么您必须在清单文件中定义没有包声明的活动,例如

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp.activities"
android:versionCode="1"
android:versionName="1.0" >

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" 
    android:name=".WorldClockApplication"

    <activity
        android:name=".WorldClockHomeActivity"
        android:label="@string/app_name" >
                  <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".AddLocationActivity"/>         
    <activity   android:name=".EditPreference"/>

</application>

</manifest>

然后,您应该使用意图在另一个活动中调用该活动。考虑我从 WorldClockApplication 活动中调用 WorldClockHomeActivity 如下:

  Intent myIntent=new Intent(WorldClockApplication.this,WorldClockHomeActivity.class);
  startActivity(myIntent);

然后清理,刷新你的项目,你的项目不会出错。如果出现错误

 setContentView(R.layout.main);

这意味着您在清单文件中没有的 res/strings 或 res/layout 或 res/drawable 文件夹中有问题

于 2012-07-14T06:58:05.457 回答
0

如果您正在使用Eclipse在您的项目中创建一个新数据包并将您的活动文件拖放到其中。Eclipse 将负责所有必要的更改。

正如您在问题中发布的那样,更改位于您的目录结构和清单中。

活动可以Intents像往常一样通过Intent(context, YourActivity.class);

不过,我不会移动这些活动,而是将其他Java 类组织在单独的包中。

于 2012-07-14T06:32:21.280 回答