Как разрешить исключение NullPointerException в Activity при вызове метода суперкласса onCreate () в Android - PullRequest
1 голос
/ 03 марта 2012

Привет, друзья! Я написал «Активность», как показано ниже.

SplashScreen.java

public class SplashScreen extends Activity {

protected final int _splashTime = 4000;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    new Handler().postDelayed(new Runnable() {      
        public void run() {
            startActivity(mainIntent);*/
            Main mainObj=new Main();
            final Bundle bundle=new Bundle();
            mainObj.onCreate(bundle);
            finish();
        }
    }, _splashTime);
   }
}

Из вышеупомянутой операции iam вызывается Main.java, который выглядит следующим образом.

public class Main extends Activity{

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);//line 1.

        setContentView(R.layout.main1);

      }

}

В вышеупомянутом Main.java в строке 1 при вызове super.onCreate (saveInstanceState) я получаю NullPointerException. Я определил, что если я вызываю Activity, создавая объект с помощью оператора new, то это дает NullPointerException, как показано ниже

Main mainObj=new Main();

final Bundle bundle=new Bundle();

mainObj.onCreate(bundle);

Но если я вызываю Activity, используя

startActivity(new Intent(SplashScreen.this,Main.claass));

, я не получаю NullPointerException. Так как я могу запустить Activity, создав объект с использованием нового оператора без NullPointerException.

Ответы [ 3 ]

1 голос
/ 03 марта 2012

Так как я могу запустить Activity, создав объект с помощью нового оператора без NullPointerException.

Никогда не пытайтесь создать экземпляр Activity с использованием new,Это не так, как работает Android.Класс Activity - это особый случай в Android (вместе с несколькими другими специальными компонентами Android), и вам необходимо правильно создавать их и управлять ими.

Чтобы создать новый Activity, вы всегда должны создавать новый Intent и использовать startActivity(...) или один из других startActivityXXX(...) методов.

См. Основы применения

0 голосов
/ 03 марта 2012

Вы захотите использовать метод startActivity (), который, похоже, уже заработал.Вы не хотите напрямую вызывать метод onCreate () вашей подоперации.За кулисами происходит множество событий, которыми управляет Android, когда вы вызываете startActivity.

Вот ссылка на руководство разработчика: Запуск занятия

0 голосов
/ 03 марта 2012

Где определяется mainIntent? Попробуйте это в ветке:

public void run() {
        Intent mainIntent = new Intent(this, Main.class);
        startActivity(mainIntent);
        finish();
    }
...