Unable To Access library activity in another project

匆匆过客 提交于 2019-12-11 19:20:22

问题


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. And com.themontcalm.droid.activity launcher project where i am accessing library activity

code 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,

  1. go to properties and then Android, below there is Library part, click to add button and select your library.
  2. 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!