2014-01-12 90 views
10

我有一個基本活動,我從中繼承了其他幾項活動。未在清單中註冊的活動Lint警告

我在清單中註冊的那些其他活動,我可以在我的應用程序中使用它們。

但是,Android檢查說,對於我的基本活動,"Activity not registered in the manifest"

我沒有理由註冊基本活動,因爲我從不直接使用它。但是,也許,我錯過了一些東西,這個警告不應該被忽略?

爲什麼這個警告呢?

+0

我的假設是,Android Studio只會檢查給定的類是否繼承自Activity。據我所知,如果一個類是一個基類,並且實際上正在被使用或不會被使用,那麼Android Studio沒有直接的方法來檢測。 – Ahmad

+0

唯一需要向清單添加活動的方法是向系統註冊意圖,以便您的組件和其他應用程序可以創建啓動活動的意圖。您可以關閉lint檢查或將活動添加到清單中,或者忽略它。 – Simon

+0

@Simon如果我將我的基礎活動添加到清單中,是否會有任何不可預見的安全風險? –

回答

16

您只需要在清單中列出作爲應用程序入口點的活動。即,使用Intent調用的活動。

您不應該有實際上不可實例化入口點的活動。做這樣的活動類別abstract。這也將擺脫皮棉警告。

+0

啊,真的。我沒想過讓它們抽象,哈!謝謝。 –

+0

我正在接管其他地方的大量代碼,我如何檢查它是否可以用'intent'調用? – not2qubit

1

你應該讓你的BaseActivity成爲一個抽象類。無需在清單中註冊這些活動,它們只是簡單的java類,擴展了Activity類而不是應用程序的活動。

public abstract class BaseActivity extends Activity { 
    @Override 
    public void onCreate(bundle) { 
    super.onCreate(bundle); 
    setContentView(getLayoutResourceId()); 
    } 

    protected abstract int yourmethods(); 
    } 

public class Activity1 extends BaseActivity { 
    @Override 
    public void onCreate(bundle) { 
    super.onCreate(bundle); 
    // do extra stuff on your resources, using findViewById on your layout_for_activity1 
} 

    @Override 
    protected int yourmethod() { 
    //implemetation 
    } 
}