您好我是Android的新手,我创建了2个项目。
现在我想点击一下按钮,从第一个项目中调用第二个项目中的一个活动。
第一个项目只处理登录界面,当我点击登录按钮时,我需要调用第二个项目中的活动。
我在网上搜索但没找到任何我理解得很好的教程。
您好我发现了以下错误。
01-30 08:36:47.230: E/dalvikvm(3408): Could not find class 'com.androidhive.googleplacesandmaps.MainActivity', referenced from method org.fluturasymphony.recommendation.LoginActivity$DownloadWebPageTask.doInBackground
01-30 08:36:52.587: E/AndroidRuntime(3408): FATAL EXCEPTION: AsyncTask #1
01-30 08:36:52.587: E/AndroidRuntime(3408): java.lang.RuntimeException: An error occured while executing doInBackground()
01-30 08:36:52.587: E/AndroidRuntime(3408): at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.lang.Thread.run(Thread.java:856)
01-30 08:36:52.587: E/AndroidRuntime(3408): Caused by: java.lang.NoClassDefFoundError: com.androidhive.googleplacesandmaps.MainActivity
01-30 08:36:52.587: E/AndroidRuntime(3408): at org.fluturasymphony.recommendation.LoginActivity$DownloadWebPageTask.doInBackground(LoginActivity.java:69)
01-30 08:36:52.587: E/AndroidRuntime(3408): at org.fluturasymphony.recommendation.LoginActivity$DownloadWebPageTask.doInBackground(LoginActivity.java:1)
01-30 08:36:52.587: E/AndroidRuntime(3408): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-30 08:36:52.587: E/AndroidRuntime(3408): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-30 08:36:52.587: E/AndroidRuntime(3408): ... 3 more
我已宣布清单为此。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fluturasymphony.recommendation"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.achartengine.GraphicalActivity" />
<activity android:name=".CategoryWiseSalesChartActivity" />
<activity android:name=".ProductWiseSalesChartActivity" />
<activity android:name="com.androidhive.googleplacesandmaps.MainActivity"/>
<activity android:label="@string/home_screen" android:name=".HomeActivity" android:configChanges="orientation">
</activity>
<activity android:label="@string/store_screen" android:name=".StoreActivity" android:configChanges="orientation">
</activity>
<activity android:label="@string/store_list_screen" android:name=".StoreListActivity" android:configChanges="orientation">
</activity>
<activity android:label="@string/location_screen" android:name=".StoreMapActivity" android:configChanges="orientation">
</activity>
<activity android:label="@string/recommended_products_list_screen" android:name=".RecommendedProductsListActivity" android:configChanges="orientation">
</activity>
<activity android:label="@string/category_wise_sales_screen" android:name=".CategoryWiseSalesActivity" android:configChanges="orientation">
</activity>
<activity android:label="@string/product_wise_sales_screen" android:name=".ProductWiseSalesActivity" android:configChanges="orientation">
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
</manifest>
我正在调用第二类中的活动。
Intent loginintent = new Intent("com.androidhive.googleplacesandmaps.MainActivity");
startActivity(loginintent);
这是对的吗?
答案 0 :(得分:3)
根据Android,您可以通过制作项目Library然后在清单文件中定义它并以您想要的方式调用它来处理此问题
根据我的要求我做了一个解释
要调用的活动按钮单击使用其完整包名称在Manifest中定义它然后当您在按钮上调用它时单击新项目的活动将触发
这样做的样本如下
在第一个项目的manifest
文件中定义了一些像这样的东西
<activity
android:name="packagefull.activityname"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
</activity>
包名称中的定义要调用的活动的完整路径,并在包名称后面给出活动的名称 希望这对你有用,因为这对我来说非常适合
答案 1 :(得分:1)
这对于开发任何应用程序来说都不是一个好方法。但是,如果你想实现这一点,你必须为该应用程序的Manifest文件中的目标活动声明Intent Filter,并将其用作登录活动的隐含意图。
在项目A的清单中:
<activity android:name="com.example.android.TargetActivity">
<intent-filter>
<action android:name="com.someone.wants.to.call.me"></action>
</intent-filter>
</activity>
内部项目B的活动:
Intent intent = new Intent("com.someone.wants.to.call.me");
startActivity(intent);
答案 2 :(得分:1)
使用此:
Intent i = new Intent(Intent.ACTION_MAIN);
i.setComponent(new ComponentName("app package name", "app launch activity's classname"));
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
答案 3 :(得分:0)
在地图项目的AndroidManifest文件中添加自定义意图过滤器
<!-- add custom action -->
<activity android:name="MapActivity"
android:label="@string/mapLabel"
>
<intent-filter>
<action android:name="com.example.map.show" />
</intent-filter>
</activity>
从登录按钮调用此活动,如下所示:
Intent intent = new Intent(“com.example.map.show”); startActivity(意向);
答案 4 :(得分:-1)
您应该为每个应用程序使用一个项目。如果要将登录名与应用程序的其余部分分开,则可以使用不同的程序包。除非我误解你的“项目”是什么意思?