Сбой при запуске подоперации - PullRequest
0 голосов
/ 20 июня 2011

У меня сбой при попытке запустить подоперацию. У меня есть небольшое приложение, чтобы продемонстрировать проблему. Основная часть приложения представляет собой представление списка, и когда вы нажимаете на элемент в представлении списка, оно должно запускать действие, которое вызывает представление галереи. Приложение аварийно завершает работу перед вызовом onCreate () для класса представления галереи, поэтому я подозреваю, что пропустил некоторые необходимые вещи в xml для описания действия.

манифест:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="randombrand.ListGallery"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="7" />

        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:label="@string/app_name" android:name=".ListGallery">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

            <activity android:label="Manual Top" android:name=".TestGallery">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>

        </application>
    </manifest>

Java

    public class ListGallery extends ListActivity
    {
        private static final String[] astrMainMenu = { "List Item 1", "List Item 2" };


        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);

            setListAdapter(new ArrayAdapter<String>(this, R.layout.main,
                    astrMainMenu));

            ListView lView = getListView();
            lView.setTextFilterEnabled(true);
        }

        @Override
        protected void onListItemClick(ListView l, View v, int position, long id)
        {
            Intent intent = new Intent();

            intent.setClass(this, TestGallery.class);

            startActivity(intent);
        }
    }

трассировка стека для сбоя при вызове startActivity ():

ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2417  
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2512   
ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119 
ActivityThread$H.handleMessage(Message) line: 1863  
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 123 
ActivityThread.main(String[]) line: 4363    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 521  
ZygoteInit$MethodAndArgsCaller.run() line: 860  
ZygoteInit.main(String[]) line: 618 
NativeStart.main(String[]) line: not available [native method]  

заранее спасибо,

Jay

1 Ответ

0 голосов
/ 20 июня 2011

Вы должны создать Intent, используя следующий код:

Intent intent = new Intent(this, TestGallery.class);

Недостаточно просто указать имя класса, вам также необходимо указать имя пакета, в котором расположен этот класс. В приведенном выше примере кода имя пакета берется из this (this равно Context, а имя пакета берется через Context.getPackageName()).

P.S. Обратите внимание, что под "пакетом" я не подразумеваю пакет java, я имею в виду пакет Android. Тот, который указан в AndroidManifest.xml файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...