0

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

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

你能看到我的问题吗?

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);
    }
}
4

3 回答 3

4

检查您的活动

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

您忘记添加此行。所以在 androidmanifest.xml 文件中也添加这一行。

于 2013-02-14T14:48:04.000 回答
1

您正在尝试设置 a ViewinsetContentView()而不是 alayout

this.setContentView(textview);

如果您打算这样做,那么您需要以编程方式创建一个布局,例如

RelativeLayout relativeLayout = new RelativeLayout(this);

然后你可以添加你TextView的并设置你的布局setContentView()

除非您需要这样做,否则更简单的方法可能是创建 xml 布局,然后在调用后TextView从那里获取您的findViewById(R.id.textView1)setContentView(R.layout.your_layout_file);

日志猫

要打开 logcat,如果还没有在 Eclipse 中,转到 Window-> Show View -> Other -> Android-> Logcat。

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

一个例子可能是

Caused by: java.lang.NullPointerException
08-07 08:24:02.516: ERROR/AndroidRuntime(334):     at your_app.org.ThisActivity.onCreate(ThisActivity.java:26)   

然后你就知道开始查看第 26 行的内容ThisActivity是否为空

于 2013-02-14T14:41:54.467 回答
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我不太明白TextView在布局 XML 中声明 a 会是一个更简单的选择。

但我想每个人都是他自己的。

于 2013-02-14T14:43:50.290 回答