Urimatcher в провайдере контента Android - PullRequest
1 голос
/ 31 января 2012

Я новичок в Android. Я просмотрел код Android ContentProvider и немного путаюсь с UriMatcher, потому что операторы в static будут выполняться первыми. Здесь в коде внутри UriMatcher есть блок static без представления о PROVIDER_NAME. Как это можно использовать, потому что до инициализации PROVIDER_NAME должен работать блок static .

public class CustomContentProvider extends ContentProvider {

    public static final String PROVIDER_NAME = 
        "net.learn2develop.provider.Book";

     public static final Uri CONTENT_URI = 
        Uri.parse("content://"+ PROVIDER_NAME + "/books");

     public static final String _ID = "_id";
     public static final String TITLE = "title";
     public static final String ISBN = "isbn";

     private static final int BOOKS = 1;
     private static final int BOOK_ID = 2;   

     private static final UriMatcher uriMatcher;
     static {
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI(PROVIDER_NAME, "books", BOOKS);
        uriMatcher.addURI(PROVIDER_NAME, "books/#", BOOK_ID);      
     }

любая помощь очень приветствуется ... заранее спасибо

1 Ответ

1 голос
/ 31 января 2012

Статический код инициализации выполняется в текстовом порядке.Это включает статические поля, а также статические блоки.

PROVIDER_NAME поэтому уже инициализируется, когда статический блок выполняет

...