开始新的活动问题

时间:2013-02-14 14:34:36

标签: android android-intent

我创建了一个菜单,当我点击注册表时,我想打开一个只有一行文本的新类。

应用程序打开并运行,但当我点击菜单中的“注册”按钮时,应用程序崩溃了。我没有代码错误。

你能看到我的问题吗?

public boolean onOptionsItemSelected(MenuItem item) {    
    // Handle item selection    
    switch (item.getItemId()) {        
    case R.id.register: 

        Intent intent = new Intent(MeorNot.this, AddMember.class);
        startActivity(intent);

        return true; 
    }
}

这是我尝试打开的新课程

package com.meornotFinal;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;


public class AddMember extends Activity {

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("Add member");
        this.setContentView(textview);
    }
}

3 个答案:

答案 0 :(得分:4)

检查您的活动

<activity android:name="AddMember.class"> in AndroidManifest.xml file. 

你忘了添加这一行。所以在androidmanifest.xml文件中也添加这一行。

答案 1 :(得分:1)

您正尝试在View而不是setContentView()

中设置layout

this.setContentView(textview);

如果您打算这样做,那么您需要以类似

的方式以编程方式创建布局
RelativeLayout relativeLayout = new RelativeLayout(this);

然后您可以将TextView添加到此处,并在setContentView()

中设置您的布局

除非您需要这样做,否则更简单的方法可能是创建xml布局,然后在调用TextView之后通过findViewById(R.id.textView1)setContentView(R.layout.your_layout_file);获取Caused by: java.lang.NullPointerException 08-07 08:24:02.516: ERROR/AndroidRuntime(334): at your_app.org.ThisActivity.onCreate(ThisActivity.java:26)

<强> logcat的

要打开logcat,如果尚未在Eclipse中,请转到窗口 - &gt;显示视图 - &gt;其他 - &gt; Android-&GT; logcat中。

这将为您提供一个控制台,用于记录错误和其他调试信息。当你的应用程序崩溃时,它会给你原因,通常是一个带有行号的java文件。如果错误发生在该行之前,您可能需要进一步挖掘,但它会为您提供一个良好的起点。

一个例子可能是

ThisActivity

然后你知道要开始查看{{1}}的第26行是否为null

答案 2 :(得分:1)

点击注册按钮后您调用的活动的当前代码块:

public class AddMember extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("Add member");
        this.setContentView(textview);

    }
}

您需要将this.setContentView(textview);更改为以下内容:

public class AddMember extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_layout_in_your_layout_folder);

            // CAST YOUR TEXTVIEW HERE
    }
}

a_layout_in_your_layout_folder中,您可以保留一个LinearLayout并在运行时添加TextView。我没有完全看到做这样的事情,因为在布局XML中声明TextView将是一个更简单的选项。

但我认为对他自己而言。