Почему я не могу создать контент-резольвер

Буквально все, что я сделал, это создать новый проект. import android.app.Activity; import android.content.ContentResolver; import android.os.Bundle; public class WebApp4Act extends Activity {/** Вызывается, когда действие сначала создается. */public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks"); Контекстный контекст = getBaseContext(); ContentResolver cr = getContentResolver();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
}
}

когда я запускаю проект, он говорит, что, к сожалению, webApp4c остановился

если я прокомментирую строку ContentResolver cr = getContentResolver(); то нет никаких проблем, я пытаюсь запустить это на AVD, установленном для запуска на версии 14

0
источник поделиться
2 ответа

Этот ответ довольно прост. К сожалению, getContentResolver() и любые другие методы, которые требуют Context не могут сделать это во время процесса создания приложения или инициализации. В некоторых версиях AVD это не было должным образом реплицировано, поэтому почему оно работает в некоторых версиях AVD. Все, что вам нужно сделать, - это переместить свой код внутри onCreate() (или любую другую функцию, выполняемую ПОСЛЕ строительства), и все будет в порядке.

Примечание. Существуют способы передать пользовательский вид или активировать эту информацию во время строительства, но есть две оговорки:

  1. Вы не можете сделать это для первого компонента, запущенного в вашем приложении, без другого приложения или компонента приложения, предоставляющего его вам...
  2. Это МОЖЕТ привести к небезопасному коду.

В большинстве случаев лучше всего работать в рамках жизненного цикла Android. Если вам нужна информация о жизненном цикле Android, вы можете получить ее из документации Android или от Javadoc.

Дополнительная заметка (Edit): вам действительно не нужен getBaseContext(). Существует несколько видов Context и ваша Activity считается одной. getBaseContext() лучше всего использовать, когда вам нужно передать или удержать Context за пределами жизненного цикла Android.

Надеюсь, это поможет, FuzzicalLogic

+1
источник
Context context = getBaseContext();
ContentResolver cr = getContentResolver();

необходимо вызвать после метода onCreate или в методе onCreate

+3
источник

Посмотрите другие вопросы по меткам или Задайте вопрос