如何在Android中调用活动
我有下面的场景。 我的申请表中有两个软件包。 com.example.package1; org.otherexample.package2 我在舱单上声明如下:如何在Android中调用活动,android,Android,我有下面的场景。 我的申请表中有两个软件包。 com.example.package1; org.otherexample.package2 我在舱单上声明如下: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.package1" android:versionCode="1" android:versionName="1.0" >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package1"
android:versionCode="1"
android:versionName="1.0" >
<activity android:name=".ActivityfromPackage1"/>
<activity android:name="org.otherexample.package2.ActivityFromPackage2"/>
</manifest>
import org.otherexample.package2.ActivityFromPackage2
..........
Intent intent = new Intent(this,ActivityFromPackage2.class);
startActivity(intent);
我收到以下错误:
Unable to start Activity com.example.package1/org.otherexample.package2.ActivityFromPackage2:
JavaLang nullpointer exception
如何调用该活动?
非常感谢。我认为您可能需要稍微修改一下清单,试着让它看起来更像这样
<activity android:name=".ActivityFromP2">
<intent-filter>
<action android:name="package2.intent.action.Launch" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我怀疑您发布的内容之外的内容是您问题的根源。我只是做了一个示例项目来测试它
以下是我在清单中的两个活动声明:
<activity
android:name="com.example.packagetesting.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>
<activity
android:name="com.example.anotherpackage.AnotherActivity"
android:label="@string/title_activity_another" >
</activity>
注意,在我的第二个活动中,我必须从主包导入R:
import com.example.packagetesting.R;
但在这样做之后,一切都会正确编译和运行
另请注意,在我的日志文件中显示:
Starting: Intent { cmp=com.example.packagetesting/com.example.anotherpackage.AnotherActivity }
与您的一样,它显示了两个不同的包名,即使另一个活动仅在com.example中。另一个包
我刚刚检查了您的代码。它在我的应用程序中工作
舱单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.firstapp.tempp.testapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.pac.abcs.TestActivity" >
</activity>
</application>
</manifest>
因此,这不是包装声明的问题。有一个疑问,您是否在第二个活动(ActivityFromPackage2)或com.example.package1.R中导入了android.R?您需要导入com.example.package1.R.您是否阅读过:?活动2中有什么?这个错误很可能来自Activity2。它可能期望一些您没有传递的值,或者编码不正确。您应该用行号发布完整的堆栈跟踪。@DumpHole Activity2中没有任何内容…只有一个setcontentview()…对包的调用不正确。。。正在调用firstpackage/secondpackage.Activity2…但是Activity2…只是在secondpackage中…而不是在first中。second@Sam我读过那篇文章……但正如你所看到的,上面写着“我假设你所说的“包”是指应用程序。”我的包在同一个应用程序中。。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.firstapp.tempp.testapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.pac.abcs.TestActivity" >
</activity>
</application>
</manifest>
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, TestActivity.class));
}
});