Intereting Posts
Просмотр изображения для Android Нажатие на уведомление не открывает указанную деятельность Виджет Android для события click Как я могу знать зарегистрированные устройства в моем облаке приложений GCM (список устройств) Активность просочилась в окно com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0, которое было первоначально добавлено здесь Кнопка «закрыть» в панели инструментов вместо «Назад» Как воспроизводить мелодию звонка / сигнала тревоги в Android Как установить фон приложения Android? Установить изображение из галереи для фона настольного телефона (android-java) Android Использование списка слоев для выбора кнопок Как показать карту шкалы шкалы на карте android v2 Получить текущее время в заданном часовом поясе: андроид DequeueBuffer: невозможно удалить несколько буферов без установки количества буферов Java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.view.View android.app.Activity.findViewById (int)' для ссылки на нулевой объект Как установить размер текста в WebView в android

Добавлено facebook SDK теперь не может возобновить действие силы закрыть

Моя активность бросает эту ошибку при сбое:

java.lang.RuntimeException: Unable to resume activity {com.beerportfolio.beerportfoliopro/com.example.mike.beerportfoliomaterial.MainDrawer2}: java.lang.IllegalArgumentException: Both context and applicationId must be non-null at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3069) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3098) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469) at android.app.ActivityThread.access$900(ActivityThread.java:172) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5653) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) at dalvik.system.NativeStart.main(NativeStart.java) Caused by: java.lang.IllegalArgumentException: Both context and applicationId must be non-null at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:273) at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:260) at com.example.mike.beerportfoliomaterial.MainDrawer2.onResume(MainDrawer2.java:179) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1198) at android.app.Activity.performResume(Activity.java:5618) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3059) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3098) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469) at android.app.ActivityThread.access$900(ActivityThread.java:172) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5653) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) at dalvik.system.NativeStart.main(NativeStart.java) 

Мой код для деятельности:

 import android.IntentIntegrator; import android.IntentResult; import android.annotation.TargetApi; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.Toast; import com.facebook.Session; import com.facebook.AppEventsLogger; /** * Created by Mike and Simon on 2/22/14. */ public class MainDrawer2 extends ActionBarActivity { private static final String EXTRA_NAV_ITEM = "extraNavItem"; private static final String STATE_CURRENT_NAV = "stateCurrentNav"; private ActionBarDrawerToggle mDrawerToggle; private DrawerLayout mDrawerLayout; private NavDrawerListAdapter mDrawerAdapter; private ListView mDrawerList; private CharSequence mTitle; private CharSequence mDrawerTitle; private MainNavItem mCurrentNavItem; public static Intent createLaunchFragmentIntent(Context context, MainNavItem navItem) { return new Intent(context, MainDrawer2.class) .putExtra(EXTRA_NAV_ITEM, navItem.ordinal()); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); //Crashlytics.start(this); mTitle = mDrawerTitle = getTitle(); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); mDrawerList = (ListView)findViewById(R.id.drawer); // Set a toolbar to replace the action bar. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitleTextColor(0xFFFFFFFF); setSupportActionBar(toolbar); //getActionBar().setDisplayHomeAsUpEnabled(true); //enableHomeButtonIfRequired(); mDrawerAdapter = new NavDrawerListAdapter(getApplicationContext()); mDrawerList.setAdapter(mDrawerAdapter); mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { displayNavFragment((MainNavItem)parent.getItemAtPosition(position)); if(mDrawerLayout.isDrawerOpen(mDrawerList)) { mDrawerLayout.closeDrawer(mDrawerList); } else { mDrawerLayout.openDrawer(mDrawerList); } } }); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_menu_white, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { //getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { //getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if(getIntent().hasExtra(EXTRA_NAV_ITEM)){ MainNavItem navItem = MainNavItem.values() [getIntent().getIntExtra(EXTRA_NAV_ITEM, MainNavItem.STATISTICS.ordinal())]; displayNavFragment(navItem); } else if(savedInstanceState != null){ mCurrentNavItem = MainNavItem.values() [savedInstanceState.getInt(STATE_CURRENT_NAV)]; setCurrentNavItem(mCurrentNavItem); } else{ displayNavFragment(MainNavItem.STATISTICS); } } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) private void enableHomeButtonIfRequired() { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){ //getActionBar().setHomeButtonEnabled(true); } } public void setActionBarTitle(String title) { //getActionBar().setTitle(title); } @Override public void setTitle(CharSequence title) { mTitle = title; //getActionBar().setTitle(mTitle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggles mDrawerToggle.onConfigurationChanged(newConfig); } @Override protected void onResume() { super.onResume(); // Logs 'install' and 'app activate' App Events. AppEventsLogger.activateApp(this); } @Override protected void onPause() { super.onPause(); // Logs 'app deactivate' App Event. AppEventsLogger.deactivateApp(this); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (mCurrentNavItem == null){ } else{ outState.putInt(STATE_CURRENT_NAV, mCurrentNavItem.ordinal()); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } /* @Override public boolean onPrepareOptionsMenu(Menu menu) { // if nav drawer is opened, hide the action items boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_settings).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } */ private void displayNavFragment(MainNavItem navItem) { //if(navItem == mCurrentNavItem){ // return; //} Fragment fragment = Fragment.instantiate(this, navItem.getFragClass().getName()); if(fragment != null){ getSupportFragmentManager().beginTransaction() .replace(R.id.main, fragment) .commit(); //setCurrentNavItem(navItem); } } private void setCurrentNavItem(MainNavItem navItem) { int position = navItem.ordinal(); // If navItem is in DrawerAdapter if(position >= 0 && position < mDrawerAdapter.getCount()){ //mDrawerList.setItemChecked(position, true); } else{ // navItem not in DrawerAdapter, de-select current item if(mCurrentNavItem != null){ //mDrawerList.setItemChecked(mCurrentNavItem.ordinal(), false); } } //test to keep item not selected int toClear=mDrawerList.getCheckedItemPosition(); if (toClear >= 0) { mDrawerList.setItemChecked(toClear, false); } mDrawerLayout.closeDrawer(mDrawerList); //setTitle(navItem.getTitleResId()); mCurrentNavItem = navItem; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: if(mDrawerLayout.isDrawerOpen(mDrawerList)) { mDrawerLayout.closeDrawer(mDrawerList); } else { mDrawerLayout.openDrawer(mDrawerList); } return true; default: return super.onOptionsItemSelected(item); } } public void goToSearch(MenuItem item){ //go to search page Fragment Fragment_one; FragmentManager man= getSupportFragmentManager(); FragmentTransaction tran = man.beginTransaction(); Fragment_one = new Search(); tran.replace(R.id.main, Fragment_one);//tran. tran.addToBackStack(null); tran.commit(); } public void scanBarcode(MenuItem item){ //open scanner IntentIntegrator scanIntegrator = new IntentIntegrator(this); scanIntegrator.initiateScan(); } public void onActivityResult(int requestCode, int resultCode, Intent intent) { //retrieve scan result IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (scanningResult != null) { //we have a result String scanContent = scanningResult.getContents(); //todo: set scan content into setting, load new fragment which calls async task below. New //todo: fragment will have same ui as search. :-) Fragment Fragment_one; FragmentManager man= this.getSupportFragmentManager(); FragmentTransaction tran = man.beginTransaction(); BarcodeFrag fragmentNew = new BarcodeFrag(); Bundle bundle = new Bundle(); bundle.putString("scanContent", scanContent); fragmentNew.setArguments(bundle); tran.replace(R.id.main, fragmentNew);//tran. tran.addToBackStack(null); //tran.commit(); tran.commitAllowingStateLoss(); } else{ Toast toast = Toast.makeText(getApplicationContext(), "No scan data received!", Toast.LENGTH_SHORT); toast.show(); } } } 

Facebook дал мне эти инструкции, чтобы отслеживать установку. Ошибка указывает, что мне, кажется, не хватает некоторых аргументов, инструкции пропустили что-то:

Введите описание изображения здесь

Solutions Collecting From Web of "Добавлено facebook SDK теперь не может возобновить действие силы закрыть"

Вы уже установили метаданные applicationId в свой AndroidManifest.xml под тегом application ?

 <application ...> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> </application> 

Кроме того, не забудьте также определить app_id строки app_id .

 <string name="app_id">xxxxxxxxxxxx</string> 

Для получения дополнительной информации https://developers.facebook.com/docs/android/getting-started

В настоящее время руководство по быстрому запуску Facebook не так. Им не хватает нескольких важных шагов:

  • Инициализировать SDK
  • Сохраните идентификатор приложения

В частности, вам нужно добавить это в свою деятельность, где вы хотите использовать AppEventsLogger.activateApp(this) :

  @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); } 

И вам нужно сохранить идентификатор приложения:

 <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> 

И значение strings.xml :

 <string name="facebook_app_id">your_id_here</string> 

Раздражающий, что их руководство по быстрому запуску на самом деле вызывает больше проблем, чем оно решает прямо сейчас!

Если у кого-то тоже есть эта проблема, для меня это было исправлено с помощью: AppEventsLogger.activateApp (контекст, идентификатор), то есть AppEventsLogger.activateApp (это, «ваш-fb-id»). Идентификатор, объявленный как строка, использовался манифестом, но давал мне проблемы в работе, считая, что это значение пусто.

Я использую Facebook SDK v4.13. Мне нужно было сделать следующие изменения для отслеживания установки и аналитики приложений.

AndroidManifest.xml

 <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 

Кажется, что SDK объединяет активность в локальном файле. Поэтому это разрешение является обязательным, если вы еще не дали.

Я загружаю идентификатор приложения в код

 AppEventsLogger.activateApp(this, Constants.FACEBOOK_APP_ID); 

Простой, добавьте в свою активность этот метод

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); }