Java 如何在不扩展活动的情况下使用编辑文本

Java 如何在不扩展活动的情况下使用编辑文本,java,android,Java,Android,我正在做一个游戏,试图让键盘在他们触摸某个区域时弹出。 我已经在扩展一个名为Screen的类,无法扩展我知道的有关编辑文本的活动,但不适用于我。他们有别的办法吗?或者,除非你能让编辑文本在这里工作,因为我一直在尝试,但没有运气。`package com.rmjr42.math4kidz import java.util.List; import android.graphics.Color; import android.graphics.Paint; import android.os.Loo

我正在做一个游戏,试图让键盘在他们触摸某个区域时弹出。 我已经在扩展一个名为Screen的类,无法扩展我知道的有关编辑文本的活动,但不适用于我。他们有别的办法吗?或者,除非你能让编辑文本在这里工作,因为我一直在尝试,但没有运气。`package com.rmjr42.math4kidz

import java.util.List;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Looper;
import android.widget.EditText;

import com.rmjr42.framework.Game;
import com.rmjr42.framework.Graphics;
import com.rmjr42.framework.Image;
import com.rmjr42.framework.Screen;
import com.rmjr42.framework.Graphics.ImageFormat;
import com.rmjr42.framework.Input.TouchEvent;

public class GameScreenCount extends Screen {
    //Math4Kidz keyboard=new Math4Kidz();
    //  EditText text;
    //Surface s=new Surface();
    enum GameState {
        Ready, Running, Paused, GameOver
    }
    GameState state = GameState.Ready;
    // Variable Setup   
    Paint paint, paint2;

    public GameScreenCount(Game game) {
        super(game);
        //  Looper.prepare();
        // Initialize game objects here

        Graphics g = game.getGraphics();

        NewImage pic=new NewImage();


        Assets.background = g.newImage(pic.randombackground(), ImageFormat.RGB565);
        //get one random
        Assets.pic1=g.newImage(pic.singleImage(),ImageFormat.RGB565);

        // Defining a paint object
        paint = new Paint();
        paint.setTextSize(70);
        paint.setTextAlign(Paint.Align.CENTER);
        paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);

        paint2 = new Paint();
        paint2.setTextSize(100);
        paint2.setTextAlign(Paint.Align.CENTER);
        paint2.setAntiAlias(true);
        paint2.setColor(Color.WHITE);

    }




    @Override
    public void update(float deltaTime) {
        List<TouchEvent> touchEvents = game.getInput().getTouchEvents();



        if (state == GameState.Ready)
            updateReady(touchEvents);
        if (state == GameState.Running)
            updateRunning(touchEvents, deltaTime);
        if (state == GameState.Paused)
            updatePaused(touchEvents);
        if (state == GameState.GameOver)
            updateGameOver(touchEvents);
    }

    private void updateReady(List<TouchEvent> touchEvents) {

        state = GameState.Running;
    }

    private void updateRunning(List<TouchEvent> touchEvents, float deltaTime) {



        // 1. All touch input is handled here:
        int len = touchEvents.size();
        Graphics g = game.getGraphics();
        for (int i = 0; i < len; i++) {
            TouchEvent event = touchEvents.get(i);

            if (event.type == TouchEvent.TOUCH_UP) {
                if (inBounds(event, 300, 100, 200, 200)) {
                    //Looper.prepare();//EDIT TEXT SHOULD GO HERE


                    //game.setScreen(new GameScreenCount(game));
                }

            }
        }





    }

    private boolean inBounds(TouchEvent event, int x, int y, int width,
            int height) {
        if (event.x > x && event.x < x + width - 1 && event.y > y
                && event.y < y + height - 1)
            return true;
        else
            return false;
    }

    private void updatePaused(List<TouchEvent> touchEvents) {
        int len = touchEvents.size();
        for (int i = 0; i < len; i++) {
            TouchEvent event = touchEvents.get(i);
            if (event.type == TouchEvent.TOUCH_UP) {
                if (inBounds(event, 0, 0, 800, 240)){

                    if (!inBounds(event, 0, 0, 35, 35)){
                        resume();}
                }

                if (inBounds(event, 0, 240, 800, 240)){
                    nullify();
                    goToMenu();
                }
            }
        }
    }

    private void updateGameOver(List<TouchEvent> touchEvents) {
        int len = touchEvents.size();
        for (int i = 0; i < len; i++) {
            TouchEvent event = touchEvents.get(i);
            if (event.type == TouchEvent.TOUCH_DOWN) {
                if (inBounds(event, 0, 0, 800, 480)) {
                    nullify();
                    game.setScreen(new MainMenuScreen(game));
                    return;
                }
            }
        }

    }







    @Override
    public void paint(float deltaTime) {
        Graphics g = game.getGraphics();

        g.drawImage(Assets.background, 0, 0);
        g.drawImage(Assets.pic1, 300, 100);
        g.drawString("How many are there ? ", 400, 400, paint);


        // Secondly, draw the UI above the game elements.

        if (state == GameState.Paused)
            drawPausedUI();
        if (state == GameState.GameOver)
            drawGameOverUI();

    }


    private void nullify() {
        paint = null;
        // Call garbage collector to clean up memory.
        System.gc();


    }
    private void drawPausedUI() {
        Graphics g = game.getGraphics();
        // Darken the entire screen so you can display the Paused screen.
        g.drawARGB(155, 0, 0, 0);
        g.drawString("Resume", 400, 165, paint2);
        g.drawString("Menu", 400, 360, paint2);
    }

    private void drawGameOverUI() {
        Graphics g = game.getGraphics();
        g.drawRect(0, 0, 1281, 801, Color.BLACK);
        g.drawString("GAME OVER.", 400, 240, paint2);
        g.drawString("Tap to return.", 400, 290, paint);

    }

    @Override
    public void pause() {
        if (state == GameState.Running)
            state = GameState.Paused;

    }

    @Override
    public void resume() {
        if (state == GameState.Paused)
            state = GameState.Running;
    }

    @Override
    public void dispose() {

    }

    @Override
    public void backButton() {
        pause();
    }

    private void goToMenu() {
        // TODO Auto-generated method stub
        game.setScreen(new MainMenuScreen(game));

    }


}
import java.util.List;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.os.Looper;
导入android.widget.EditText;
导入com.rmjr42.framework.Game;
导入com.rmjr42.framework.Graphics;
导入com.rmjr42.framework.Image;
导入com.rmjr42.framework.Screen;
导入com.rmjr42.framework.Graphics.ImageFormat;
导入com.rmjr42.framework.Input.TouchEvent;
公共类GameScreenCount扩展了屏幕{
//Math4Kidz键盘=新的Math4Kidz();
//编辑文本;
//曲面s=新曲面();
枚举配子状态{
准备、运行、暂停、游戏结束
}
GameState=GameState.Ready;
//变量设置
油漆油漆,油漆2;
公共游戏屏幕计数(游戏){
超级(游戏);
//Looper.prepare();
//在这里初始化游戏对象
Graphics g=game.getGraphics();
NewImage pic=newnewimage();
Assets.background=g.newImage(pic.randombackground(),ImageFormat.RGB565);
//随机得到一个
Assets.pic1=g.newImage(pic.singleImage(),ImageFormat.RGB565);
//定义绘制对象
油漆=新油漆();
油漆.尺寸(70);
paint.setTextAlign(paint.Align.CENTER);
paint.setAntiAlias(真);
油漆。设置颜色(颜色。白色);
油漆2=新油漆();
油漆2.设置尺寸(100);
paint2.setTextAlign(Paint.Align.CENTER);
paint2.setAntiAlias(真);
油漆2.setColor(颜色为白色);
}
@凌驾
公共无效更新(浮动增量时间){
List touchEvents=game.getInput().getTouchEvents();
if(state==GameState.Ready)
更新日期(touchEvents);
if(state==GameState.Running)
更新规划(touchEvents,deltaTime);
如果(状态==游戏状态。暂停)
UpdatePause(触摸事件);
if(state==GameState.GameOver)
updateGameOver(触摸事件);
}
私有void updaterady(列出touchEvents){
状态=游戏状态。正在运行;
}
私有无效更新规划(列出touchEvents、float deltaTime){
//1.所有触摸输入均在此处处理:
int len=touchEvents.size();
Graphics g=game.getGraphics();
对于(int i=0;ix&&event.xy
&&事件y
这需要大量的工作,特别是如果你想很好地使用任何键盘的话。
android.view.inputmethod.InputMethod