2013-12-15 6 views
0

манифеста:Моя вторая раскладка деятельность не начинается, когда я нажимаю его

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.colegiul.orar" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="19" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 


     <activity 
      android:name=".Splash" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 


     <activity 
      android:name=".StartingPoint" android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.colegiul.orar.STARTINGPOINT" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".ourClass" 
      android:label="@string/app_name" > 

</activity> 
      <activity 
      android:name=".Menu" android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.colegiul.orar.MENU" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Menu.java:

package com.colegiul.orar; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class Menu extends ListActivity{ 

    String classes[] ={"StartingPoint", "Clasa a 9-a A", "Clasa a 9-a B" 
      , "Clasa a 9-a C", "Clasa a 9-a D", "Clasa a 9-a E", "Clasa a 9-a F"}; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes)); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 
     String cheese =classes[position]; 
     try{ 
     Class ourClass = Class.forName("com.colegiu.orar." + cheese); 
     Intent ourIntent = new Intent(Menu.this, ourClass); 
     startActivity(ourIntent); 
     }catch(ClassNotFoundException e){ 
      e.printStackTrace(); 
     } 
    } 
} 

StartingPoint.java

package com.colegiul.orar; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class StartingPoint extends Activity { 

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


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.starting_point, menu); 
     return true; 
    } 

} 

main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".StartingPoint" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/orar" /> 

</RelativeLayout> 

Мое приложение набрасывается с заставкой, которая отлично работает и открывает новое меню, которое содержит список из 7 примеров, а первый «StartingPoint» должен открыть новую активность, но это не так, и моя голова почти взорвался, пытаясь понять, почему это было ... может кто-нибудь сказать, пожалуйста, почему это не работает должным образом? Благодарю.

O, PS: Пожалуйста, будьте очень терпеливы и объясните мне подробно bacause Я новичок.

+1

Вы забыли объявить о деятельности на AndroidManifest.xml. –

ответ

0

Я думаю, проблема в том, что вы не объявляете свою вторую активность в своем Manifest.
Для каждого Activity, вы должны объявить его в вашем Manifest.xml, как показано ниже:

<activity 
    android:name="com.colegiul.national.MainActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name="com.colegiul.national.SecondActivity" 
    android:label="@string/app_name" > 
// You declared the Intent-filter as an Activity. This is wrong. An Intent-filter 
// is to inform the system of the capability of the component, not the name of your 
// Activity or the package. It is to the say what is your Activity will do. 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name="com.colegiul.national.ThirdActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

И также, как сказал @Vikram, вам нужно позвонить своему Intent так:

Intent myIntent = new Intent(FirstActivity.this, SecondActivity.class); 
startActivity(myIntent); 

Вам нужно для установки Context с первым параметром и Class на втором. Смотрите здесь для более подробной информации: Build Intent Documentation


EDIT:
В вашем случае, попробуйте создать свой Intent, как показано ниже:

String packClass = "com.colegiul.orar." + cheese; 
Intent ourIntent = new Intent(Menu.this, Class.forName(packClass)); 
startActivity(ourIntent); 
+0

Я объявил о всех действиях, и если я положу класс ourClass.class, Eclipse говорит, что мне нужно сделать еще один класс: | – user3104504

+0

Дайте мне знать, если мой обновленный ответ будет работать. (: – Fllo

+0

Черт все еще не работает: | Нажатие StartPoint и ничего не делает :( – user3104504

0

Две точки: 1) положить .class после ourClass при вызове нашей активности. Как это

Intent ourIntent = new Intent(Menu.this, ourClass.class); 
     startActivity(ourIntent); 

2) Ваша вторая активность не зарегистрирована в manifest.xml.Register его как этот

<activity 
      android:name=".ourClass" 
      android:label="@string/app_name" > 

</activity> 
+0

Я делаю оба ваши предложения , до сих пор не работает :( – user3104504

2

Ваш onListItemClick имеет что-то вроде:

Class ourClass = Class.forName("com.colegiu.orar." + cheese); 
Intent ourIntent = new Intent(Menu.this, ourClass); 
startActivity(ourIntent); 

и ваш манифеста упакованное имя, определенное как: package="com.colegiul.orar".

Очевидно, что это не сработает! Вы должны заменить эту строку следующим одной

Class ourClass = Class.forName("com.colegiul.orar." + cheese); 

EDIT:

После этого у вас есть еще одна проблема instanciating ваш Intent, потому что ваши cheese значения не объявлены как деятельность в манифесте.

String classes[] ={"StartingPoint", "Clasa a 9-a A", "Clasa a 9-a B" 
      , "Clasa a 9-a C", "Clasa a 9-a D", "Clasa a 9-a E", "Clasa a 9-a F"}; 

Вашего classes массив содержит только один Activity имени объявленного в манифесте приложения. Другие - нет. (На самом деле вы не можете объявлять действия с пробелами - они недействительны!) Таким образом, вы должны столкнуться с сообщением в стеке, например: «Вы объявили это действие в манифесте» или может быть выбрано исключение (ClassNoFoundException).

+2

+1: хороший стрелять, большие глаза :) – Fllo

+0

охраняемую недействительным onListItemClick (ListView л, Вид v, внутр положение, длинный идентификатор) { \t \t // TODO Auto-генерироваться метод заглушки \t \t super.onListItemClick (L, V, положение, идентификатор); \t \t Строка сыр = классы [положение]; \t \t попытка { \t \t \t Класс ourClass = Class.forName ("com.colegiul.orar." + Сыр); \t \t \t Intent ourIntent = новое намерение (Menu.this, Class.forName (ourClass)); \t \t startActivity (ourIntent); \t \t} catch (ClassNotFoundException e) { \t \t \t e.printStackTrace(); \t \t} Итак, теперь? что я делаю, у меня ошибка в forName (ourClass); – user3104504

+0

@ user3104504, Взгляните на мой ответ. – yugidroid

Смежные вопросы