布局夸大的按钮onClick侦听器不起作用

安德鲁·德尔加迪洛:

我所有其他onClick方法都起作用,除了那些我必须在布局中膨胀才能获得按钮的方法之外!我究竟做错了什么!这是一些代码:

package com.games.think;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;

import android.widget.Button;
import android.widget.RadioButton;
import android.widget.TableLayout;

public class Think extends Activity{
    //What question are we on?
    int question = 1;
    //What level are we on?
    String lvl ="1";

    //Radio buttons we need to access them global
    RadioButton lvl1;
    RadioButton lvl2;
    RadioButton lvl3;
    RadioButton lvl4;
    RadioButton lvl5;

     /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //play
        Button play = (Button)findViewById(R.id.play);
        play.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                playOnClick(v);

            }
        });
        //level
        Button level = (Button)findViewById(R.id.level);
        level.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                levelOnClick(v);

            }
        });

        //setLevel
        LayoutInflater  inflater = LayoutInflater.from(this);
        TableLayout tbl = new TableLayout(this);

        View playv = inflater.inflate(R.layout.level, null);
        Button updateLevel = (Button) playv.findViewById(R.id.updateLevel);
        tbl.addView(updateLevel);

        updateLevel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    updateLevelOnClick(v);
                }
            });

        View levelv = inflater.inflate(R.layout.play, null);
        Button gotomenu = (Button) levelv.findViewById(R.id.tomenu);

        gotomenu.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    toMenuOnClick(v);
                }
            });





       //Radio Buttons
        lvl1 = (RadioButton) levelv.findViewById(R.id.lvl1);

        lvl2 = (RadioButton) levelv.findViewById(R.id.lvl2);

        lvl3 = (RadioButton) levelv.findViewById(R.id.lvl3);

        lvl4 = (RadioButton) levelv.findViewById(R.id.lvl4);

        lvl5 = (RadioButton) levelv.findViewById(R.id.lvl5);
       //tomenu


        lvl = getLevel();


        if(lvl.equals("-1")) {
            lvl=getLevel();

        }






    }




    protected void toMenuOnClick(View v) {
        setContentView(R.layout.main);

    }




    protected void updateLevelOnClick(View v) {

        setContentView(R.layout.main);


    }




    protected void levelOnClick(View v) {
        setContentView(R.layout.level);


        if(lvl.equals("1")) {
            lvl1.setChecked(true);
        }
        if(lvl.equals("2")) {
            lvl2.setChecked(true);
        }
        if(lvl.equals("3")) {
            lvl3.setChecked(true);
        }
        if(lvl.equals("4")) {
            lvl4.setChecked(true);
        }
        if(lvl.equals("5")) {
            lvl5.setChecked(true);
        }

    }




    protected void playOnClick(View v) {
        setContentView(R.layout.play);


        setQuestion();


    }






    private String getLevel() {

        String FILENAME = "think_level";
        FileInputStream fis;
        byte[] buffer = new byte[1000];


        try {
            fis = openFileInput(FILENAME);
        } catch (FileNotFoundException e) {
            setLevel("1");
            return "-1";
        }

        try {
            fis.read(buffer,0,1000);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            fis.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String level = buffer.toString();

        return level;
    }

    private void setLevel(String _level) {
        String FILENAME = "think_level";
        String level = _level;

        FileOutputStream fos;
        try {
            fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
            fos.write(level.getBytes());
            fos.close();
        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    private void setQuestion() {




    }



    }

这是我的xml文件:Main.xml:

<?xml version="1.0" encoding="utf-8"?>

    <TableLayout android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageView1" android:src="@drawable/think" android:scaleType="fitCenter"></ImageView>
        <Button android:id="@+id/play" android:text="Play" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button>
        <Button android:text="Level" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/level"></Button>


    </TableLayout>

这是我的level.xml

<?xml version="1.0" encoding="utf-8"?>
    <TableLayout android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <TextView android:text="Level:" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        </TableRow>
        <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content">
                <RadioButton android:id="@+id/lvl1" android:text="Level 1" android:layout_height="wrap_content" android:checked="true" android:layout_width="wrap_content"></RadioButton>
                <RadioButton android:id="@+id/lvl2" android:text="Level 2" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton>
                <RadioButton android:id="@+id/lvl3" android:text="Level 3" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton>
                <RadioButton android:id="@+id/lvl4" android:text="Level 4" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton>
                <RadioButton android:id="@+id/lvl5" android:text="Level 5" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton>
            </RadioGroup>
        </TableRow>
        <Button android:text="Set Level" android:id="@+id/updateLevel" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </TableLayout>

这是play.xml:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <ScrollView android:id="@+id/scrollView1" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:text="TextView" android:id="@+id/question" android:layout_height="wrap_content" android:layout_width="wrap_content"></TextView>
    </ScrollView>
    <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" >
        <RadioButton android:id="@+id/radioButton1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="RadioButton"></RadioButton>
        <RadioButton android:id="@+id/radioButton2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="RadioButton"></RadioButton>
        <RadioButton android:id="@+id/radioButton3" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="RadioButton"></RadioButton>
    </RadioGroup>
    <Button android:id="@+id/go" android:text="Go" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button>
    <Button android:id="@+id/tomenu" android:text="Back To Menu" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button>
</TableLayout>
布莱恩·格里菲(Brian Griffey):

问题是您要添加的视图没有父视图,因此无法接收点击事件。目前,您正在使用扩大视图

View playv = inflater.inflate(R.layout.level, null);

您需要在第二个参数中放置一个父视图。

View playv = inflater.inflate(R.layout.level, parentView, false);

这将允许您使用父视图,但不能实际附加它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章