Android начать деятельность по выбору пункта меню - PullRequest
8 голосов
/ 16 декабря 2010

У меня есть 2 класса.Одним из них будет экран основных инструкций, и на этом экране будет меню, которое позволит вам перейти к другому классу.Другой класс - это MapActivity.Я считаю, что проблема в том, что его не найти другой класс.Я пробовал несколько разных способов заявить о намерении найти класс.Это последнее, что я пробовал:

@Override
public boolean onCreateOptionsMenu(Menu menu){        
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainmenu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch(item.getItemId()){
    case R.id.goToMap:
        Intent intent = new Intent();
        intent.setClassName(Main.this, "Map.Class");
        startActivity(intent);
        return true;            
    }
    return false;
}

Это базовый класс, который расширяет Activity, а класс карты - это базовый класс, расширяющий MapActivity (может ли это вызвать проблемы?).И вот важная часть моего файла манифеста:

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Campus_Map"
              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=".Main" android:label="Instructions" ></activity>
    <activity android:name=".Map" android:label="Map">
        <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>

</application>

Редактировать: Когда я смотрю на LogCat, чтобы выяснить, что происходит, я получаю java.lang.NoClassDefFoundError и несколько других сообщений о«Не удалось найти ссылку на класс ./Map», «Не удалось найти класс ./Map, на который ссылается метод ./Main.run» и «VFY: невозможно разрешить const-class 37»

Ответы [ 4 ]

16 голосов
/ 04 июня 2011

Вы можете использовать как это, и не забудьте добавить оба действия в AndroidManifest.xml:

Intent launchNewIntent = new Intent(CurrentClass.this,SecondClass.class);
startActivityForResult(launchNewIntent, 0);
3 голосов
/ 16 декабря 2010

Вы пробовали таким образом?

Intent intent = new Intent(Main.this, Map.class);
2 голосов
/ 29 августа 2013
case R.id.home:
    startActivity(new Intent(main.this, map.class));
    return true;
1 голос
/ 14 февраля 2012

Вы должны включить эту строку в свой манифест

<uses-library android:name="com.google.android.maps" />

Если вы уже сделали это, вы сделали это неправильно!Он должен быть внутри тега <application> </application>.В противном случае вы получите ошибку

...