1

这是一个非常基本的问题,我知道,但我似乎无法自己弄清楚。虽然 Android 教程将帮助您制作一个练习应用程序,但它并不能真正告诉您您在做什么。(我已经成功完成了他们的教程。)我所有的搜索都提出了不那么新奇的问题而没有回答我的问题。所以这是我初学者的问题:

我想显示文本“Sup World”。我究竟做错了什么?我确定 null 是错误的,但我无法弄清楚实际应该存在什么。“这个”不起作用。并且其中有 null , setContextView 不存在。

package com.evorlor.testcode;

import android.widget.TextView;

public class SupWorld {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String message = "Sup world.";

        TextView textView = new TextView(null);
        textView.setTextSize(40);
        textView.setText(message);

        setContentView(textView);

    }

}

我的问题不在于上我的 SupWorld 课程,是吗?:

package com.evorlor.testcode;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(this, SupWorld.class);
        startActivity(intent);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
4

3 回答 3

2

将您的代码更改为:

public class SupWorld extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

         String message = "Sup world.";

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        setContentView(textView);

    }

}

在 中声明上述活动类AndroidManifest.xml

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".MainActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:label="@string/app_name"
        android:name=".SupWorld" >
    </activity>
</application>

除此之外,您将看到一些在 android 中创建您的第一个应用程序的好教程,请参阅这些

http://www.mkyong.com/android/android-activity-from-one-screen-to-another-screen/

http://developer.android.com/training/basics/firstapp/index.html

于 2012-12-10T19:32:53.787 回答
0

第一个答案搜索这个简单的问题

第二个答案:

   public class SupWorld extends Activity {

    /**
     * @param args
     */
    public void onCreate(Bundle l) {
        // TODO Auto-generated method stub
        super.onCreate(l);

        String message = "Sup world.";

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        setContentView(textView);

    }

  }

将此活动添加到清单并运行

于 2012-12-10T19:34:33.190 回答
0

我认为最好解释它失败的原因,而不是给出答案。基本上这条线是你的罪魁祸首:

TextView textView = new TextView(null);

查看 TextView 的构造函数时,您会发现它需要 Context。上下文在android中用于将内容附加到相应的应用程序中。在这种情况下,使用 TextView 需要 Context,因为此 TextView 属于此应用程序。

正确的方法是传递上下文:

TextView textView = new TextView(this);

或者

TextView textView = new TextView(getApplicationContext());

附加相应的上下文后,它将起作用。null 不是一个有效的上下文,并且会抛出一个空指针异常 (NPE)。

尝试阅读有关TextView的文档以了解更多信息。

ρяσѕρєя K如指出的那样,可能导致的其他错误是 Activity 未在您的 AndroidManifest.xml 中注册。这是必需的,以便应用程序知道在您尝试在其下注册的应用程序下注册该活动。

于 2012-12-10T19:39:14.360 回答