2012-03-03 3 views
1

Привет, я написал такое действие, как показано ниже.Как разрешить NullPointerException в действии при вызове метода super class onCreate() в Android

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 (savedInstanceState) РМКО получение NullPointerException.I определили, что если я называю активность путем создания объекта с помощью нового оператора он дает NullPointerException как ниже

Main mainObj=new Main(); 

final Bundle bundle=new Bundle(); 

mainObj.onCreate(bundle); 

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

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

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

ответ

1

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

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

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

См Application Fundamentals

+0

Спасибо за ответ MisterSquonk. – user1195614

+0

@ user1195614: Добро пожаловать. Большинство классов, используемых в Android, можно обрабатывать так же, как любой Java-класс, но ключевые компоненты приложения (например, «Активность») должны обрабатываться по-разному. Не забудьте пометить эту ссылку - это очень полезно. – Squonk

0

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

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

MisterSquonk объяснил это хорошо. Действия не совпадают с классами, прочитайте ссылку на Основы, которую он опубликовал –

+0

Спасибо за отзыв Стю. – user1195614

0

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

Вот ссылка на руководства разработчика: Starting An Activity

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

  • Нет связанных вопросов^_^