Android: возникают проблемы при запуске новой активности - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь написать приложение, которое запускается из главного меню (вид сетки), а затем создает новое действие на основе значка, который нажимает пользователь. Сейчас я пытаюсь просто отобразить пустой экран для одного из значков, чтобы убедиться, что я могу успешно создать новое действие. Моя основная деятельность называется HomeScreen, а новая активность, которая должна быть запущена, когда я нажимаю на первый значок, называется CulpaActivity. Я размещаю HomeScreen, CulpaActivity и Манифест.

public class HomeScreen extends Activity {
    /** Called when the activity is first created. */
    @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));
        Drawable background = this.getResources().getDrawable(R.drawable.bg);
        gridview.setBackgroundDrawable(background);

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(HomeScreen.this, "" + position, Toast.LENGTH_SHORT).show();

            Intent cuAppIntent = null;
            switch (position){
            case 0:
                cuAppIntent.setClass(HomeScreen.this, CulpaActivity.class);
            }   
        }
    });    
    }
}

public class CulpaActivity extends Activity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));
        gridview.setBackgroundDrawable(null);
    }
}

А вот и Манифест:

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

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true" />

<application
    android:debuggable="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".HomeScreen" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

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

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

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

Ответы [ 3 ]

3 голосов
/ 10 января 2012

Я думаю, что это ваша проблема:

Intent cuAppIntent = null;

Вы определяете cuAppIntent как null, но вы напрямую получаете доступ к cuAppIntent.setClass() без предварительной инициализации cuAppIntent.

switch (position){
    case 0:
        cuAppIntent.setClass(HomeScreen.this, CulpaActivity.class);
} 

Чтобы исправить это, попробуйте сначала выполнить инициализацию:

Intent cuAppIntent = new Intent();

и затем добавьте:

startActivity(cuAppIntent);

сразу после звонка cuAppIntent.setClass()

1 голос
/ 10 января 2012
cuAppIntent = new Intent();
cuAppIntent.setClass(HomeScreen.this, CulpaActivity.class);
startActivity(cuAppIntent);

После создания намерения. Также вы, вероятно, генерируете исключение нулевого указателя, так как вы, кажется, не делаете вызов для генерации намерения.

0 голосов
/ 10 января 2012

в этой части вашего кода в активности на главной странице

Intent cuAppIntent = null;
        switch (position){
             case 0:
                  cuAppIntent=(homeScreen.this, CulpaActivity.class);
                 startActivity(cuAppIntent);
                  break;
...