textview给出空指针

时间:2015-04-15 12:15:18

标签: java android

我讨厌这样的错误。我得到一个空指针。我知道这意味着什么。我只是不明白我是如何得到它的,因为我知道它应该指向的项目确实存在。我正在创建一个将由opengl渲染器更新的文本视图。 textview提供了一个分数。我已经用XML创建了textview并给它一个&id;然后我在我的程序中引用它并通过渲染器更新它。全局创建TextView变量然后在onCreate()方法中初始化它们。然后我创建了一个设置文本的方法。在我的渲染器类中调用。

这是我的java代码

View r1;
TextView score3, score4;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set app to full screen and keep screen on
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(Main.layout);//R.layout.gl_triallayout;

        r1 = findViewById(Main.id);////R.id.gl_triallayout;
        score3 = (TextView) findViewById(R.id.threeScore);
        score4 = (TextView) findViewById(R.id.fourScore);
        ......
        }

 public int get3(int i){
        score3.setText("Score" + String.valueOf(i));
        ((RelativeLayout) r1).bringChildToFront(findViewById(R.id.threeScore));
        Log.i("i", String.valueOf(i));
        return i;
    }

XML代码

<TextView
    android:id="@+id/threeScore"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Score"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:textSize="30dp"
    android:textColor="#ffff00"/>

更新

主要课程

   public void Trial(View v) {
        layout = R.layout.gl_triallayout;
        id = R.id.glTrialLayout;
        gameType = 0;
        Intent intent = new Intent(Main.this, OpenGLActivity.class);
        startActivity(intent);
    }

    public void PlayGame(View v) {
        layout = R.layout.gl_layout;
        id = R.id.glLayout;
        gameType = 1;
        Intent intent = new Intent(Main.this, OpenGLActivity.class);
        startActivity(intent);
    }

我讨厌混乱stackoverflow的想法与相同的问题,所以如果答案非常简单,你可以在评论中给我。然后我可以删除它。

1 个答案:

答案 0 :(得分:2)

你的

setContentView(Main.layout)

应该是

setContentView(R.layout.filename) 

在上面的代码中,您应该根据您的需要更改布局文件名,例如R.layout.activity_main

同样适用于,

 r1 = findViewById(Main.id);////R.id.gl_triallayout;

什么是r1

如果是按钮,则应为

 r1 = (Button) findViewById(R.id.gl_triallayout);////R.id.gl_triallayout;

如果它是Editext,

 r1 = (EditText) findViewById(R.id.gl_triallayout);////R.id.gl_triallayout

如果是TextView,

 r1 = (TextView) findViewById(R.id.gl_triallayout);////R.id.gl_triallayout

另外,在XML布局中,score4r1的视图在哪里?

我认为您应该首先开始学习Android的基础知识。