无法访问另一个项目中的库活动

时间:2013-07-31 05:43:04

标签: android android-manifest android-tabhost android-library

我正在尝试将库活动访问到另一个项目中(在tabhost中)  并且每个标签调用不同的活动。)但它抛出异常

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?
  

其中: - com.themontcalm.droid.lib.activity.ReservationTab是一个   图书馆项目。和com.themontcalm.droid.activity发射器   我正在访问图书馆活动的项目

     

我正在访问我的项目库的代码:---

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);
        }

    }

}

3 个答案:

答案 0 :(得分:2)

  

我怀疑清单文件中的<activity>标记声明是否有效   尝试并在清单文件中包含此内容:

<uses-library android:name="com.themontcalm.droid.lib.activityr"
android:required="true" /> 

答案 1 :(得分:0)

您应该在当前项目中声明com.themontcalm.droid.lib.activity.ReservationTab库。为此,

  1. 转到属性,然后转到Android,下面是Library部分,单击添加按钮并选择您的库。
  2. 在eclipse更新之前就是这样,但现在你也应该去Java Built Path并选择你的库。

答案 2 :(得分:0)

确保将库项目链接为库而不是外部jar。转到项目properties > Android > Library,然后单击添加库。

然后,当您在项目清单中定义活动时

<activity
        android:label="@string/app_name"
        android:name="fullpath.LibraryProjectActivity" >    
</activity>