Android Studio 中的启动画面问题:错误 "Unfortunately MyApplication has stopped"、java.lang.NullPointerException 错误
Splash Screen Issue in Android Studio: Error "Unfortunately MyApplication has stopped", java.lang.NullPointerException error
我运行闪屏5秒。一旦那个时间结束,我的应用程序就终止了,而不是去 MainActivity.java,并给我一个错误说 "Unfortunately My Application has stopped"。
请查看下面的LogCat。
我也在想我可能在 AndroidManifest.xml.
中写错了动作 android:name 和类别 android:name
我是编程方面的新手,正在学习 Android Studio 的 Eclipse 教程。我真的很感激详细的指导。
下面是我的代码。
AndroidMenifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Splash"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="com.example.android.myapplication.MainActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.java
package com.example.android.myapplication;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int counter = 0;
Button add = (Button) findViewById(R.id.bAdd);
Button sub = (Button) findViewById(R.id.bSub);
TextView display = (TextView) findViewById(R.id.tView);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
add.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
counter++;
display.setText("Your total is " + counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
counter = counter - 1;
display.setText("Your total is " + counter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Splash.xml
package com.example.android.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
/**
* Created by Psp on 2016-02-02.
*/
public class Splash extends Activity {
@Override
protected void onCreate(Bundle PLovesMishti) {
super.onCreate(PLovesMishti);
setContentView(R.layout.splash);
Thread timer = new Thread() {
public void run() {
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
}
}
};
timer.start();
}
}
LogCat
02-03 23:53:45.920: E/AndroidRuntime(4264): ***FATAL EXCEPTION: main***
02-03 23:53:45.920: E/AndroidRuntime(4264): Process: com.example.android.myapplication, PID: 4264
02-03 23:53:45.920: E/AndroidRuntime(4264): ***java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.myapplication/com.example.android.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference***
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.access0(ActivityThread.java:144)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.os.Handler.dispatchMessage(Handler.java:102)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.os.Looper.loop(Looper.java:135)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.main(ActivityThread.java:5221)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.reflect.Method.invoke(Native Method)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.reflect.Method.invoke(Method.java:372)
02-03 23:53:45.920: E/AndroidRuntime(4264): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
02-03 23:53:45.920: E/AndroidRuntime(4264): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-03 23:53:45.920: E/AndroidRuntime(4264): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.Activity.findViewById(Activity.java:2071)
02-03 23:53:45.920: E/AndroidRuntime(4264): at com.example.android.myapplication.MainActivity.<init>(MainActivity.java:18)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.reflect.Constructor.newInstance(Native Method)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.Class.newInstance(Class.java:1572)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
换行:
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
到
Intent openStartingPoint = new Intent(SplashActivity.this,MainActivity.class);
startActivity(openStartingPoint);
可能对你有帮助。
换行
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
到
Intent openStartingPoint = new Intent(Splash.this, MainActivity.class);
startActivity(openStartingPoint);
您在 activity 实例化之前获得浏览量
Button add = (Button) findViewById(R.id.bAdd);
Button sub = (Button) findViewById(R.id.bSub);
TextView display = (TextView) findViewById(R.id.tView);
从全局声明中删除这些行并将其添加到 setContentView(R.layout.activity_main)
之后的 MainActivity
的 onCreate()
public void onCreate() {
....
setContentView(R.layout.activity_main);
....
Button add = (Button) findViewById(R.id.bAdd);
Button sub = (Button) findViewById(R.id.bSub);
TextView display = (TextView) findViewById(R.id.tView);
}
使用这一行并粘贴你的主 activity 空指针异常,因为初始化你的主 activity 视图似乎有些事情你会出错。
Intent i= new Intent(SplashActivity.this,MainActivity.class);
开始活动(我);
log cat 说你指向一个空对象基本上意味着计算机看到该对象但它的值为 0 s 意味着它不存在或它没有数据可能想要检查您尝试拉动 spash.xml 的位置,您的问题主要在 activity 以及 splash.xml 上,您有 time.start();没有停止点 可能会导致崩溃,因为你在一个永无止境的循环中
替换 finally 块中的行
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
to
Intent openStartingPoint = new Intent(Splash.this, MainActivity.java);
startActivity(openStartingPoint);
主要Activity应该是
public class MainActivity extends AppCompatActivity {
int counter = 0;
Button add; // Declare here
Button sub ;
TextView display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize here after setContentView
add = (Button) findViewById(R.id.bAdd);
sub = (Button) findViewById(R.id.bSub);
display = (TextView) findViewById(R.id.tView);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
add.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
counter++;
display.setText("Your total is " + counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
counter = counter - 1;
display.setText("Your total is " + counter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
试试这个。问题是您的 AndroidMenifest.xml 代码仅删除了一些代码。
<intent-filter>
<action android:name="com.example.android.myapplication.MainActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在 MainActivity.java 文件中进行以下更改 -
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
到下面给出的代码-
Intent openStartingPoints = new Intent(SplashActivity.this,MainActivity.class);
startActivity(openStartingPoints);
我运行闪屏5秒。一旦那个时间结束,我的应用程序就终止了,而不是去 MainActivity.java,并给我一个错误说 "Unfortunately My Application has stopped"。
请查看下面的LogCat。
我也在想我可能在 AndroidManifest.xml.
中写错了动作 android:name 和类别 android:name我是编程方面的新手,正在学习 Android Studio 的 Eclipse 教程。我真的很感激详细的指导。
下面是我的代码。
AndroidMenifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Splash"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="com.example.android.myapplication.MainActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.java
package com.example.android.myapplication;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int counter = 0;
Button add = (Button) findViewById(R.id.bAdd);
Button sub = (Button) findViewById(R.id.bSub);
TextView display = (TextView) findViewById(R.id.tView);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
add.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
counter++;
display.setText("Your total is " + counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
counter = counter - 1;
display.setText("Your total is " + counter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Splash.xml
package com.example.android.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
/**
* Created by Psp on 2016-02-02.
*/
public class Splash extends Activity {
@Override
protected void onCreate(Bundle PLovesMishti) {
super.onCreate(PLovesMishti);
setContentView(R.layout.splash);
Thread timer = new Thread() {
public void run() {
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
}
}
};
timer.start();
}
}
LogCat
02-03 23:53:45.920: E/AndroidRuntime(4264): ***FATAL EXCEPTION: main***
02-03 23:53:45.920: E/AndroidRuntime(4264): Process: com.example.android.myapplication, PID: 4264
02-03 23:53:45.920: E/AndroidRuntime(4264): ***java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.myapplication/com.example.android.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference***
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.access0(ActivityThread.java:144)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.os.Handler.dispatchMessage(Handler.java:102)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.os.Looper.loop(Looper.java:135)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.main(ActivityThread.java:5221)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.reflect.Method.invoke(Native Method)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.reflect.Method.invoke(Method.java:372)
02-03 23:53:45.920: E/AndroidRuntime(4264): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
02-03 23:53:45.920: E/AndroidRuntime(4264): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-03 23:53:45.920: E/AndroidRuntime(4264): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.Activity.findViewById(Activity.java:2071)
02-03 23:53:45.920: E/AndroidRuntime(4264): at com.example.android.myapplication.MainActivity.<init>(MainActivity.java:18)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.reflect.Constructor.newInstance(Native Method)
02-03 23:53:45.920: E/AndroidRuntime(4264): at java.lang.Class.newInstance(Class.java:1572)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
02-03 23:53:45.920: E/AndroidRuntime(4264): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
换行:
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
到
Intent openStartingPoint = new Intent(SplashActivity.this,MainActivity.class);
startActivity(openStartingPoint);
可能对你有帮助。
换行
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
到
Intent openStartingPoint = new Intent(Splash.this, MainActivity.class);
startActivity(openStartingPoint);
您在 activity 实例化之前获得浏览量
Button add = (Button) findViewById(R.id.bAdd);
Button sub = (Button) findViewById(R.id.bSub);
TextView display = (TextView) findViewById(R.id.tView);
从全局声明中删除这些行并将其添加到 setContentView(R.layout.activity_main)
MainActivity
的 onCreate()
public void onCreate() {
....
setContentView(R.layout.activity_main);
....
Button add = (Button) findViewById(R.id.bAdd);
Button sub = (Button) findViewById(R.id.bSub);
TextView display = (TextView) findViewById(R.id.tView);
}
使用这一行并粘贴你的主 activity 空指针异常,因为初始化你的主 activity 视图似乎有些事情你会出错。
Intent i= new Intent(SplashActivity.this,MainActivity.class); 开始活动(我);
log cat 说你指向一个空对象基本上意味着计算机看到该对象但它的值为 0 s 意味着它不存在或它没有数据可能想要检查您尝试拉动 spash.xml 的位置,您的问题主要在 activity 以及 splash.xml 上,您有 time.start();没有停止点 可能会导致崩溃,因为你在一个永无止境的循环中
替换 finally 块中的行
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
to
Intent openStartingPoint = new Intent(Splash.this, MainActivity.java);
startActivity(openStartingPoint);
主要Activity应该是
public class MainActivity extends AppCompatActivity {
int counter = 0;
Button add; // Declare here
Button sub ;
TextView display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize here after setContentView
add = (Button) findViewById(R.id.bAdd);
sub = (Button) findViewById(R.id.bSub);
display = (TextView) findViewById(R.id.tView);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
add.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
counter++;
display.setText("Your total is " + counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
counter = counter - 1;
display.setText("Your total is " + counter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
试试这个。问题是您的 AndroidMenifest.xml 代码仅删除了一些代码。
<intent-filter>
<action android:name="com.example.android.myapplication.MainActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在 MainActivity.java 文件中进行以下更改 -
Intent openStartingPoint = new Intent("com.example.android.myapplication.MainActivity");
startActivity(openStartingPoint);
到下面给出的代码-
Intent openStartingPoints = new Intent(SplashActivity.this,MainActivity.class);
startActivity(openStartingPoints);