2014-09-22 1 views
0

Я создал операцию NavigationDrawer из File> New> Android Application Project. Я выбираю «Активность навигационного ящика», и все идет хорошо, пока мне не нужно запустить экран «Настройки». Ошибка приложения. То, что я до сих пор:Невозможно запустить экран предпочтений от NavigationDrawerFragmet

Основная деятельность:

... 
case R.id.bSettings: 
Intent settingsActivity = new Intent(getBaseContext(), Preferences.class); 
StartActivity(settingsActivity); 
break; 
... 

Preferences.java:

public class Preferences extends PreferenceFragment { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 
    } 
} 

Обратите внимание, что я не хочу, рядный предпочтение, но предпочтение, как новый вид деятельности.

09-22 13: 57: 57,125: Вт/EGL_genymotion (2120): eglSurfaceAttrib не реализовано 09-22 13: 57: 57,125: Е/OpenGLRenderer (2120): Получение MAX_TEXTURE_SIZE от GradienCache 09-22 13: 57: 57.137: E/OpenGLRenderer (2120): получение MAX_TEXTURE_SIZE из кеша :: initConstraints() 09-22 13: 57: 57.137: D/OpenGLRenderer (2120): включение режима отладки 0 09-22 13: 58: 00.245 : D/AndroidRuntime (2120): выключение VM 09-22 13: 58: 00.249: W/dalvikvm (2120): threadid = 1: выход из потока с неперехваченным исключением (group = 0xa4ba8648) 09-22 13:58: 00.273: E/AndroidRuntime (2120): FATAL EXCEPTION: main 09-22 13: 58: 00.273: E/AndroidRuntime (2120): android.content.ActivityNotFoundException: Un способный найти явный класс активности {ba.arnes.aconverter/ag.android.aconvert.Preferences}; Вы объявили эту активность в своем AndroidManifest.xml? 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1628) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app.Instrumentation.execStartActivity (Instrumentation.java:1424) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app.Activity.startActivityForResult (Activity.java:3390) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app.Activity.startActivityForResult (Activity.java:3351) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app. Activity.startActivity (Activity.java:3587) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app.Activity.startActivity (Activity.java:3555) 09-22 13:58: 00.273: E/AndroidRuntime (2120): at ag.android.aconvert.MainActivity.onClick (MainActi vity.java:545) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.view.View.performClick (View.java:4240) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.view.View $ PerformClick.run (View.java:17721) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.os.Handler.handleCallback (Handler. java: 730) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.os.Handler.dispatchMessage (Handler.java:92) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.os.Looper.loop (Looper.java:137) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at android.app.ActivityThread.main (ActivityThread.java:5103) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): при java.lang.reflect.Method.invokeNative (собственный метод) 09-22 13: 58: 00.273: E/AndroidRuntime (21 20): at java.lang.reflect.Method.invoke (Method.java:525) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller. (ZygoteInit.java:737) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) 09-22 13: 58: 00.273: E/AndroidRuntime (2120): at dalvik.system.NativeStart.main (собственный метод) 09-22 13: 58: 01.841: I/Process (2120): сигнал отправки. PID: 2120 SIG: 9

+0

Просьба LogCat, мы не знаем эту проблему без описание актуальной проблемы. – Bobby

+0

Какова трассировка стека исключений, которую вы получаете? – 2014-09-22 14:03:32

ответ

2

Вам не указана декларация активности в AndroidManifest.xml.

Как говорится:

13:58:00.273: E/AndroidRuntime(2120): android.content.ActivityNotFoundException: Unable to find explicit activity class {ba.arnes.aconverter/ag.android.aconvert.Preferences}; have you declared this activity in your AndroidManifest.xml

Невозможно найти предпочтения

EDIT:

Похоже, вы пытаетесь запустить Activity и ваш класс предпочтений Fragment. Поэтому в основном вам нужен класс Activity, где в макете у вас есть место для фрагмента (например, ваш Preferences class).

public class PrefenecesActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle s) { 
     super.onCreate(s); 
     setContentView(R.layout.preferences); 

     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.holder, new PreferencesFrag()); 
     transaction.commit(); 
    } 

    public static class PreferencesFrag extends PreferenceFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.preferences); 
     } 
    } 
} 

И макет может выглядеть следующим образом:

<FrameLayout 
    android:id="@+id/holder" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Не забудьте добавить активность в AndroidManifest.xml:

<activity android:name=".PrefenecesActivity" /> 

ТОГДА вы можете использовать свой код:

case R.id.bSettings: 
Intent settingsActivity = new Intent(getBaseContext(), PrefenecesActivity.class); 
startActivity(settingsActivity); 
break; 
+0

<активность android: name = ". Предпочтения" /> ??? – Arnes

+0

Да, но я думаю, что это не сработает, потому что вы пытаетесь запустить «Активность», а ваш класс Prefeneces «Фрагмент» – vilpe89

+0

Что будет работать? Я в отчаянии. – Arnes

0

vilpe89: Tha nk вы, человек! У вас есть это право с небольшим изменением ...

AndroidManifest.xml должно быть:

<activity android:name="add.full.name.PrefenecesActivity" /> 

вместо:

<activity android:name=".PrefenecesActivity" />