Java nullpointerexception无法启动活动
当我尝试从我的主活动启动第二个活动时,我不断收到nullpointerexception错误,我的主活动代码如下所示: 包com.cep.daredevilJava nullpointerexception无法启动活动,java,android,android-intent,nullpointerexception,Java,Android,Android Intent,Nullpointerexception,当我尝试从我的主活动启动第二个活动时,我不断收到nullpointerexception错误,我的主活动代码如下所示: 包com.cep.daredevil import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; imp
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
public boolean filled = true;
EditText taskArray[] = new EditText[200];
EditText descArray[] = new EditText[200];
String taskArr[] = new String[200];
String descArr[] = new String[200];
int taskId[] = new int[200];
int descId[] = new int[200];
int n=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout llayout = (LinearLayout)findViewById(R.id.llayout);
Button addfield = new Button(this);
addfield.setText("+");
llayout.addView(addfield);
addfield.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
addtask();
}
});
for(int i=0;i<3;i++)
{
addtask();
}
LinearLayout blayout = (LinearLayout)findViewById(R.id.blayout);
Button submit = new Button(this);
submit.setText("Enter Dare");
Button viewdare = new Button(this);
viewdare.setText("View Dares");
blayout.addView(submit);
blayout.addView(viewdare);
submit.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
inputdare(null);
}
});
viewdare.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
listdare();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void addtask()
{
LinearLayout llayout = (LinearLayout)findViewById(R.id.llayout);
taskArray[n] = new EditText(this);
taskArray[n].setHint("Task Title");
taskArray[n].setId(n+10000000);
taskArray[n].setPadding(26,30,25,8);
descArray[n] = new EditText(this);
descArray[n].setHint("Task Description");
descArray[n].setId(n+20000000);
llayout.addView(taskArray[n]);
llayout.addView(descArray[n]);
n++;
}
public void inputdare(View v){
EditText daretitle = (EditText)findViewById(R.id.title);
String dare = daretitle.getText().toString();
for (int i=0;i<n;i++)
{
if (taskArr[i] != null)
{
taskArr[i] = taskArray[i].getText().toString();
}
Integer id = taskArray[i].getId();
if (id != null)
{
taskId[i] = id;
}
}
Intent intent = new Intent(this, DisplayDares.class);
Bundle bundle = new Bundle();
bundle.putStringArray("TASKS", taskArr);
bundle.putIntArray("TASKID", taskId);
bundle.putBoolean("INPUT", true);
intent.putExtras(bundle);
startActivity(intent);
}
}
public void listdare()
{
Intent intent = new Intent(this, DisplayDares.class);
Bundle bundle = new Bundle();
bundle.putBoolean("INPUT", false);
intent.putExtras(bundle);
startActivity(intent);
}
}
我得到的错误是:
03-08 13:32:18.053: E/AndroidRuntime(6873): FATAL EXCEPTION: main
03-08 13:32:18.053: E/AndroidRuntime(6873): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cep.daredevil/com.cep.daredevil.DisplayDares}: java.lang.NullPointerException
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.os.Handler.dispatchMessage(Handler.java:99)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.os.Looper.loop(Looper.java:137)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-08 13:32:18.053: E/AndroidRuntime(6873): at java.lang.reflect.Method.invokeNative(Native Method)
03-08 13:32:18.053: E/AndroidRuntime(6873): at java.lang.reflect.Method.invoke(Method.java:511)
03-08 13:32:18.053: E/AndroidRuntime(6873): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-08 13:32:18.053: E/AndroidRuntime(6873): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-08 13:32:18.053: E/AndroidRuntime(6873): at dalvik.system.NativeStart.main(Native Method)
03-08 13:32:18.053: E/AndroidRuntime(6873): Caused by: java.lang.NullPointerException
03-08 13:32:18.053: E/AndroidRuntime(6873): at com.cep.daredevil.DisplayDares.onCreate(DisplayDares.java:32)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.Activity.performCreate(Activity.java:5104)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-08 13:32:18.053: E/AndroidRuntime(6873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
对代码进行PAS运算后,第34行似乎是:
layout.addView(测试)代码>
所以这一行生成一个null指针异常
检查布局的id是否相同
提示:
在错误堆栈跟踪中,您可以进一步了解导致错误的原因:
03-08 13:32:18.053: E/AndroidRuntime(6873): Caused by: java.lang.NullPointerException
03-08 13:32:18.053: E/AndroidRuntime(6873): at com.cep.daredevil.DisplayDares.onCreate(DisplayDares.java:34)
DisplayDares.java:34
表示DisplayDares.java文件中的第34行
您将看到以下行:
layout.addView(test);
现在测试不能为NULL,因为它不会抛出那个错误。所以布局必须是这样的。对代码进行PAS运算后,第34行似乎是:
layout.addView(测试)代码>
所以这一行生成一个null指针异常
检查布局的id是否相同
提示:
在错误堆栈跟踪中,您可以进一步了解导致错误的原因:
03-08 13:32:18.053: E/AndroidRuntime(6873): Caused by: java.lang.NullPointerException
03-08 13:32:18.053: E/AndroidRuntime(6873): at com.cep.daredevil.DisplayDares.onCreate(DisplayDares.java:34)
DisplayDares.java:34
表示DisplayDares.java文件中的第34行
您将看到以下行:
layout.addView(test);
现在测试不能为NULL,因为它不会抛出那个错误。所以布局必须是这样。可能不是这样,但在粘贴的代码中似乎有一个右括号不合适:layout.addView(test)代码>从哪里获得NPE?实际上(线性布局)findViewById(R.id.layout)
在test.setText(taskArray[1])行返回null.at@zvzdhk为什么我在我的xml文件中定义它很可能不是它,但在粘贴的代码中似乎有一个右括号不合适:layout.addView(test)代码>从哪里获得NPE?实际上(线性布局)findViewById(R.id.layout)
在test.setText(taskArray[1])行返回null.at@zvzdhk为什么我在我的xml文件中定义了它?这既是一个答案也是一个提示,如果他的粘贴代码相同,第34行应该指向他的布局为空。是的,我在xml文件中定义了它。我推断错误来自text.setText(taskArray[1])代码>很好,我认为您没有完全粘贴源代码或删除了2行。stacktrace说第34行,你的错误在32上。+1@timmied:刚刚看到他将堆栈跟踪行号编辑为32。你不应该得到-1。当我发表评论时,那是一个小费。我收回我的反对票。。很好,继续(y)这既是一个答案也是一个提示,如果他的粘贴代码是相同的,第34行应该指向他的布局为空。是的,我在xml文件中定义了它。我推断错误来自text.setText(taskArray[1])代码>很好,我认为您没有完全粘贴源代码或删除了2行。stacktrace说第34行,你的错误在32上。+1@timmied:刚刚看到他将堆栈跟踪行号编辑为32。你不应该得到-1。当我发表评论时,那是一个小费。我收回我的反对票。。很好,坚持下去(y)