问题
I am trying to access library activity into another project(In tabhost and each tab call different activity.) but its throwing exception
Caused by: android.content.ActivityNotFoundException: Unable to find
explicit activity class
{com.themontcalm.droid.activity/com.themontcalm.droid.lib.activity.ReservationTab};
have you declared this activity in your AndroidManifest.xml?
where :-
com.themontcalm.droid.lib.activity.ReservationTab
is a library project. Andcom.themontcalm.droid.activity
launcher project where i am accessing library activitycode where i am accessing my project library:---
package com.themontcalm.droid.activity;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TabHost;
public class HomeScreen extends TabActivity implements OnClickListener {
TabHost tabHost;
ImageButton location, contacts, explore;
Intent intent;
//LocationGB locationActivity = new LocationGB();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
//LocationFactory.getInstance().setLocationActivity(LocationGB.class);
// addListenerOnButton();
location = (ImageButton) findViewById(R.id.location);
contacts = (ImageButton) findViewById(R.id.contacts);
explore = (ImageButton) findViewById(R.id.explore);
location.setOnClickListener(this);
contacts.setOnClickListener(this);
explore.setOnClickListener(this);
Resources res = getResources(); // Resource object to get Drawables
// The activity TabHost
TabHost.TabSpec spec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost = getTabHost();
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(getBaseContext(), com.themontcalm.droid.lib.activity.ReservationTab.class);
spec = tabHost.newTabSpec("RESERVATION")
.setIndicator("", res.getDrawable(R.drawable.testing))// ,
// res.getDrawable(R.drawable.testing)
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, com.themontcalm.droid.lib.activity.GalleryTabActivity.class);
spec = tabHost.newTabSpec("MODIFY")
.setIndicator("", res.getDrawable(R.drawable.testing))// ,res.getDrawable(R.drawable.testing)
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, com.themontcalm.droid.lib.activity.VideoTabActivity.class);
spec = tabHost.newTabSpec("VIDEO")
.setIndicator("", res.getDrawable(R.drawable.testing))// ,
// res.getDrawable(R.drawable.testing)
.setContent(intent);
tabHost.addTab(spec);
// set tab which one you want open first time 0 or 1 or 2
tabHost.setCurrentTab(0);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == location) {
// intent = new Intent(HomeScreen.this, LocationGB.class);
// HomeScreen.this.startActivity(intent);
} else if (v == contacts) {
intent = new Intent(HomeScreen.this, com.themontcalm.droid.lib.activity.ContactInfo.class);
HomeScreen.this.startActivity(intent);
} else if (v == explore) {
intent = new Intent(HomeScreen.this, com.themontcalm.droid.lib.activity.ExplorePropertyActivity.class);
HomeScreen.this.startActivity(intent);
}
}
}
回答1:
I doubt that
<activity>
tag declaration in manifest file will work but give a try and do include this in manifest file:
<uses-library android:name="com.themontcalm.droid.lib.activityr"
android:required="true" />
回答2:
You should declare your com.themontcalm.droid.lib.activity.ReservationTab library in your current project. To do this,
- go to properties and then Android, below there is Library part, click to add button and select your library.
- That was it before eclipse get updated, but now you should also go Java Built Path and select your library.
回答3:
Ensure you are linking the library projects as a library rather than external jar. go to Project properties > Android > Library
, then click add library.
Then as you are doing define the activity in your project manifest
<activity
android:label="@string/app_name"
android:name="fullpath.LibraryProjectActivity" >
</activity>
来源:https://stackoverflow.com/questions/17962447/unable-to-access-library-activity-in-another-project