可是有些问题不知道怎么解决。
问题如下:
我试着用AlterDialog 时设置一个监听按钮,当点击监听按钮的时候直接跳转到另一个类去
用Intent时,总是报错。在此求助论坛内的大神
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent=new Intent(GameView.this,FinishGame.class);
我使用Intent传递,可是报错提示 GameView,和FinishGame未定义
startActivity(intent);
}
}).show();
}
19 个解决方案
#1
贴下FinishGame和GameView是怎么定义的?
activit没注册?
activit没注册?
#2
注册了。 finishGame
public class FinishGame extends Activity {
private Button reStart,list;
private TextView finishScore;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.finish_activity);
reStart=(Button) findViewById(R.id.return_start);
list=(Button)findViewById(R.id.go_list);
finishScore=(TextView)findViewById(R.id.TvScore);
reStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(FinishGame.this,StartGame.class);
startActivity(intent);
}
});
}
}
#3
是编译错误么?clean一下
#4
楼主好牛啊!你是怎么装上Android sdk包的?我为什么总是出fetching http......的问题?就是怎么连上谷歌的服务器?非要*不可吗?还要装Android Studio吗?我买了一本Android编程的书,Android Studio只字未提。楼主都能自学成才了,羡慕加敬佩啊,教教我吧,鹅滴哥。
#5
你的gameview不会就是个view 不是activity吧?还有注册是要在manifefest里哦
#6
。。不是View ,是activity。注册过了,就是那个地方调用alertDialog时,设置Button,无法使用Intent的方法,报错是undifined。不懂哪出问题了
#7
不是呀,其他地方都没什么问题,我不太理解AlertDialog,监听的使用,特来求助
#8
我是直接下载一个Adt bundle 的直接用就行啦。
#9
代码没什么问题
我猜测,你是想在其他地方使用这段代码
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent=new Intent(GameView.this,FinishGame.class);
我使用Intent传递,可是报错提示 GameView,和FinishGame未定义
startActivity(intent);
}
}).show();
}
GameView,和FinishGame未定义这个是编译错误?
GameView.this无法离开GameView所处的类,
随意使用GameView.this可能会报
No enclosing instance of the type GameView is accessible in scope
工具类调用是,方法一般都提供一个context参数,这样AlertDialog就知道是哪里提供的了
FinishGame.class应该不会报错,只要你有这个类。
#10
贴一下错误信息?
#11
谢谢帮忙,可是还是有点不懂,我把GameView的代码贴一下,求大神解答
package hlju.daniel.game2048edition;
import java.util.ArrayList;
import java.util.List;
import hlju.daniel.game2048edition.MainActivity;
import android.app.AlertDialog;
import android.app.Notification.Action;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.GridLayout;
public class GameView extends GridLayout {
// 添加GameView的3个构造方法
public GameView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initGameView();
}
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
initGameView();
}
public GameView(Context context) {
super(context);
initGameView();
}
// 添加一个初始化的构造方法
private void initGameView() {
setColumnCount(4);
setBackgroundColor(0xffbbada0);
setOnTouchListener(new View.OnTouchListener() {
private float start_X, start_Y, offset_X, offset_Y;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
start_X = event.getX();
start_Y = event.getY();
break;
case MotionEvent.ACTION_UP:
offset_X = event.getX() - start_X;
offset_Y = event.getY() - start_Y;
if (Math.abs(offset_X) > Math.abs(offset_Y)) {
if (offset_X < -20) {
slip_left();
System.out.println("right");
} else if (offset_X > 20) {
slip_right();
System.out.println("left");
}
}else{
if(offset_Y<-20){
slip_up();
System.out.println("up");
}else if(offset_Y>20){
slip_down();
System.out.println("down");
}
}
break;
}
return true;
}
});
}
@Override
//设置卡片的宽高
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
int cardWidth=(int)(Math.min(w, h)-10)/4;
addCards(cardWidth, cardWidth);
startGame();
}
private void addCards(int cardWidth,int cardHeigh){
//添加卡片的方法
Card c;
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
c=new Card(getContext());
c.setNumber(0);
addView(c, cardWidth, cardHeigh);
cardsMap[x][y]=c;
}
}
}
private void startGame(){
MainActivity.getMainActivity().chearScore();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
cardsMap[x][y].setNumber(0);
}
}
addRandomNumber();
addRandomNumber();
}
private void addRandomNumber(){
emptyPoints.clear();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if(cardsMap[x][y].getNumber()<=0){
emptyPoints.add(new Point(x,y));
}
}
}
Point p=emptyPoints.remove((int)(Math.random()*emptyPoints.size()));
cardsMap[p.x][p.y].setNumber(Math.random()>0.1?2:4);
}
private void slip_left(){
//设定一个addOne判断是否需要添加Cards
boolean addOne =false;
//向左滑的构造方法
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
for (int x1 = x+1; x1 < 4; x1++) {
if(cardsMap[x1][y].getNumber()>0){
if(cardsMap[x][y].getNumber()<=0){
cardsMap[x][y].setNumber(cardsMap[x1][y].getNumber());
cardsMap[x1][y].setNumber(0);
x--;
addOne=true;
}else if(cardsMap[x][y].equals(cardsMap[x1][y])){
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x1][y].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void slip_right(){
boolean addOne =false;
//向右滑动构造方法
for (int y = 0; y < 4; y++) {
for (int x=3; x >=0; x--) {
for (int x1 = x-1; x1 >=0; x1--) {
if(cardsMap[x1][y].getNumber()>0){
if(cardsMap[x][y].getNumber()<=0){
cardsMap[x][y].setNumber(cardsMap[x1][y].getNumber());
cardsMap[x1][y].setNumber(0);
x++;
addOne=true;
}else if(cardsMap[x][y].equals(cardsMap[x1][y])){
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x1][y].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void slip_up(){
boolean addOne =false;
//向上滑动的构造方法
for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) {
for (int y1 = y+1; y1 < 4; y1++) {
if (cardsMap[x][y1].getNumber()>0) {
if (cardsMap[x][y].getNumber()<=0) {
cardsMap[x][y].setNumber(cardsMap[x][y1].getNumber());
cardsMap[x][y1].setNumber(0);
y--;
addOne=true;
}else if (cardsMap[x][y].equals(cardsMap[x][y1])) {
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x][y1].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void slip_down(){
boolean addOne =false;
for (int x = 0; x < 4; x++) {
for (int y = 3; y >=0; y--) {
for (int y1=y-1; y1>=0; y1--) {
if (cardsMap[x][y1].getNumber()>0) {
if (cardsMap[x][y].getNumber()<=0) {
cardsMap[x][y].setNumber(cardsMap[x][y1].getNumber());
cardsMap[x][y1].setNumber(0);
y++;
addOne=true;
}else if (cardsMap[x][y].equals(cardsMap[x][y1])) {
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x][y1].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void finish(){
boolean complete=true;
ALL:
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if(cardsMap[x][y].getNumber()==0||
x>0&&cardsMap[x][y].equals(cardsMap[x-1][y])||
x<3&&cardsMap[x][y].equals(cardsMap[x+1][y])||
y>0&&cardsMap[x][y].equals(cardsMap[x][y-1])||
y<3&&cardsMap[x][y].equals(cardsMap[x][y+1])){
complete=false;
break ALL;
}
}
}
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("重新开始", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// Intent intent=new Intent(GameView.this,FinishGame.class);
// startActivity(intent);
}
}).show();
}
}
// private void go_finish(){
// Intent intent=new Intent();
// }
private Card[][] cardsMap=new Card[4][4];
//创建一个构造方法用于存放卡片上的数字
private List<Point> emptyPoints=new ArrayList<Point>();
}
#12
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
#13
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
你那个intent第一个参数应该是context的子类
而你的GameView只是个layout不是一个context,一般context最常见是继承了activity
#14
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
你那个intent第一个参数应该是context的子类
而你的GameView只是个layout不是一个context,一般context最常见是继承了activity
求问大神,这个该怎么改,能使用intent么??
#15
求问大神,这个该怎么改,能使用intent么??
你可以给这个layout一个构造函数
在其他activity创建它的时候传入一个context
例如:
Activity里
GameView g=new GameView(this);
GameView里
Context context;//以后就用这个context就可以了
public GameView(Context context){
this.context=context;
}
#16
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
你那个intent第一个参数应该是context的子类
而你的GameView只是个layout不是一个context,一般context最常见是继承了activity
楼上正解,我就说你这个gameview应该不是activity吧,这句话的意思是没有定义参数是gameview和xxx的这个方法,重点是在没有这个方法,因为第一个参数是需要context,上下文,而不是一个view。
#17
求问大神,这个该怎么改,能使用intent么??
你可以给这个layout一个构造函数
在其他activity创建它的时候传入一个context
例如:
Activity里
GameView g=new GameView(this);
GameView里
Context context;//以后就用这个context就可以了
public GameView(Context context){
this.context=context;
}
我修改了之后,没报错了,可是运行的时候当点击它的时候直接退出了。没有达到我想要的效果,求大神再费神分析下
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("重新开始", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent=new Intent(GameView.context,FinishGame.class);
GameView.context.startActivity(intent);
}
}).show();
}
}
static Context context;//以后就用这个context就可以了
public void GameView(Context context){
this.context=context;
}
#18
你代码写的好乱
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
#19
你代码写的好乱
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
你代码写的好乱
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
#20
#1
贴下FinishGame和GameView是怎么定义的?
activit没注册?
activit没注册?
#2
贴下FinishGame和GameView是怎么定义的?
activit没注册?
注册了。 finishGame
public class FinishGame extends Activity {
private Button reStart,list;
private TextView finishScore;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.finish_activity);
reStart=(Button) findViewById(R.id.return_start);
list=(Button)findViewById(R.id.go_list);
finishScore=(TextView)findViewById(R.id.TvScore);
reStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(FinishGame.this,StartGame.class);
startActivity(intent);
}
});
}
}
#3
是编译错误么?clean一下
#4
楼主好牛啊!你是怎么装上Android sdk包的?我为什么总是出fetching http......的问题?就是怎么连上谷歌的服务器?非要*不可吗?还要装Android Studio吗?我买了一本Android编程的书,Android Studio只字未提。楼主都能自学成才了,羡慕加敬佩啊,教教我吧,鹅滴哥。
#5
你的gameview不会就是个view 不是activity吧?还有注册是要在manifefest里哦
#6
你的gameview不会就是个view 不是activity吧?还有注册是要在manifefest里哦
。。不是View ,是activity。注册过了,就是那个地方调用alertDialog时,设置Button,无法使用Intent的方法,报错是undifined。不懂哪出问题了
#7
是编译错误么?clean一下
不是呀,其他地方都没什么问题,我不太理解AlertDialog,监听的使用,特来求助
#8
楼主好牛啊!你是怎么装上Android sdk包的?我为什么总是出fetching http......的问题?就是怎么连上谷歌的服务器?非要*不可吗?还要装Android Studio吗?我买了一本Android编程的书,Android Studio只字未提。楼主都能自学成才了,羡慕加敬佩啊,教教我吧,鹅滴哥。
我是直接下载一个Adt bundle 的直接用就行啦。
#9
不是呀,其他地方都没什么问题,我不太理解AlertDialog,监听的使用,特来求助
代码没什么问题
我猜测,你是想在其他地方使用这段代码
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent=new Intent(GameView.this,FinishGame.class);
我使用Intent传递,可是报错提示 GameView,和FinishGame未定义
startActivity(intent);
}
}).show();
}
GameView,和FinishGame未定义这个是编译错误?
GameView.this无法离开GameView所处的类,
随意使用GameView.this可能会报
No enclosing instance of the type GameView is accessible in scope
工具类调用是,方法一般都提供一个context参数,这样AlertDialog就知道是哪里提供的了
FinishGame.class应该不会报错,只要你有这个类。
#10
贴一下错误信息?
#11
不是呀,其他地方都没什么问题,我不太理解AlertDialog,监听的使用,特来求助
代码没什么问题
我猜测,你是想在其他地方使用这段代码
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent=new Intent(GameView.this,FinishGame.class);
我使用Intent传递,可是报错提示 GameView,和FinishGame未定义
startActivity(intent);
}
}).show();
}
GameView,和FinishGame未定义这个是编译错误?
GameView.this无法离开GameView所处的类,
随意使用GameView.this可能会报
No enclosing instance of the type GameView is accessible in scope
工具类调用是,方法一般都提供一个context参数,这样AlertDialog就知道是哪里提供的了
FinishGame.class应该不会报错,只要你有这个类。
谢谢帮忙,可是还是有点不懂,我把GameView的代码贴一下,求大神解答
package hlju.daniel.game2048edition;
import java.util.ArrayList;
import java.util.List;
import hlju.daniel.game2048edition.MainActivity;
import android.app.AlertDialog;
import android.app.Notification.Action;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.GridLayout;
public class GameView extends GridLayout {
// 添加GameView的3个构造方法
public GameView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initGameView();
}
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
initGameView();
}
public GameView(Context context) {
super(context);
initGameView();
}
// 添加一个初始化的构造方法
private void initGameView() {
setColumnCount(4);
setBackgroundColor(0xffbbada0);
setOnTouchListener(new View.OnTouchListener() {
private float start_X, start_Y, offset_X, offset_Y;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
start_X = event.getX();
start_Y = event.getY();
break;
case MotionEvent.ACTION_UP:
offset_X = event.getX() - start_X;
offset_Y = event.getY() - start_Y;
if (Math.abs(offset_X) > Math.abs(offset_Y)) {
if (offset_X < -20) {
slip_left();
System.out.println("right");
} else if (offset_X > 20) {
slip_right();
System.out.println("left");
}
}else{
if(offset_Y<-20){
slip_up();
System.out.println("up");
}else if(offset_Y>20){
slip_down();
System.out.println("down");
}
}
break;
}
return true;
}
});
}
@Override
//设置卡片的宽高
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
int cardWidth=(int)(Math.min(w, h)-10)/4;
addCards(cardWidth, cardWidth);
startGame();
}
private void addCards(int cardWidth,int cardHeigh){
//添加卡片的方法
Card c;
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
c=new Card(getContext());
c.setNumber(0);
addView(c, cardWidth, cardHeigh);
cardsMap[x][y]=c;
}
}
}
private void startGame(){
MainActivity.getMainActivity().chearScore();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
cardsMap[x][y].setNumber(0);
}
}
addRandomNumber();
addRandomNumber();
}
private void addRandomNumber(){
emptyPoints.clear();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if(cardsMap[x][y].getNumber()<=0){
emptyPoints.add(new Point(x,y));
}
}
}
Point p=emptyPoints.remove((int)(Math.random()*emptyPoints.size()));
cardsMap[p.x][p.y].setNumber(Math.random()>0.1?2:4);
}
private void slip_left(){
//设定一个addOne判断是否需要添加Cards
boolean addOne =false;
//向左滑的构造方法
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
for (int x1 = x+1; x1 < 4; x1++) {
if(cardsMap[x1][y].getNumber()>0){
if(cardsMap[x][y].getNumber()<=0){
cardsMap[x][y].setNumber(cardsMap[x1][y].getNumber());
cardsMap[x1][y].setNumber(0);
x--;
addOne=true;
}else if(cardsMap[x][y].equals(cardsMap[x1][y])){
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x1][y].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void slip_right(){
boolean addOne =false;
//向右滑动构造方法
for (int y = 0; y < 4; y++) {
for (int x=3; x >=0; x--) {
for (int x1 = x-1; x1 >=0; x1--) {
if(cardsMap[x1][y].getNumber()>0){
if(cardsMap[x][y].getNumber()<=0){
cardsMap[x][y].setNumber(cardsMap[x1][y].getNumber());
cardsMap[x1][y].setNumber(0);
x++;
addOne=true;
}else if(cardsMap[x][y].equals(cardsMap[x1][y])){
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x1][y].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void slip_up(){
boolean addOne =false;
//向上滑动的构造方法
for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) {
for (int y1 = y+1; y1 < 4; y1++) {
if (cardsMap[x][y1].getNumber()>0) {
if (cardsMap[x][y].getNumber()<=0) {
cardsMap[x][y].setNumber(cardsMap[x][y1].getNumber());
cardsMap[x][y1].setNumber(0);
y--;
addOne=true;
}else if (cardsMap[x][y].equals(cardsMap[x][y1])) {
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x][y1].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void slip_down(){
boolean addOne =false;
for (int x = 0; x < 4; x++) {
for (int y = 3; y >=0; y--) {
for (int y1=y-1; y1>=0; y1--) {
if (cardsMap[x][y1].getNumber()>0) {
if (cardsMap[x][y].getNumber()<=0) {
cardsMap[x][y].setNumber(cardsMap[x][y1].getNumber());
cardsMap[x][y1].setNumber(0);
y++;
addOne=true;
}else if (cardsMap[x][y].equals(cardsMap[x][y1])) {
cardsMap[x][y].setNumber(cardsMap[x][y].getNumber()*2);
cardsMap[x][y1].setNumber(0);
MainActivity.getMainActivity().AddScore(cardsMap[x][y].getNumber());
addOne=true;
}
break;
}
}
}
}
if(addOne){
addRandomNumber();
finish();
}
}
private void finish(){
boolean complete=true;
ALL:
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if(cardsMap[x][y].getNumber()==0||
x>0&&cardsMap[x][y].equals(cardsMap[x-1][y])||
x<3&&cardsMap[x][y].equals(cardsMap[x+1][y])||
y>0&&cardsMap[x][y].equals(cardsMap[x][y-1])||
y<3&&cardsMap[x][y].equals(cardsMap[x][y+1])){
complete=false;
break ALL;
}
}
}
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("重新开始", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// Intent intent=new Intent(GameView.this,FinishGame.class);
// startActivity(intent);
}
}).show();
}
}
// private void go_finish(){
// Intent intent=new Intent();
// }
private Card[][] cardsMap=new Card[4][4];
//创建一个构造方法用于存放卡片上的数字
private List<Point> emptyPoints=new ArrayList<Point>();
}
#12
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
#13
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
你那个intent第一个参数应该是context的子类
而你的GameView只是个layout不是一个context,一般context最常见是继承了activity
#14
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
你那个intent第一个参数应该是context的子类
而你的GameView只是个layout不是一个context,一般context最常见是继承了activity
求问大神,这个该怎么改,能使用intent么??
#15
求问大神,这个该怎么改,能使用intent么??
你可以给这个layout一个构造函数
在其他activity创建它的时候传入一个context
例如:
Activity里
GameView g=new GameView(this);
GameView里
Context context;//以后就用这个context就可以了
public GameView(Context context){
this.context=context;
}
#16
贴一下错误信息?
The constructor Intent(GameView, Class<FinishGame>) is undefined
你那个intent第一个参数应该是context的子类
而你的GameView只是个layout不是一个context,一般context最常见是继承了activity
楼上正解,我就说你这个gameview应该不是activity吧,这句话的意思是没有定义参数是gameview和xxx的这个方法,重点是在没有这个方法,因为第一个参数是需要context,上下文,而不是一个view。
#17
求问大神,这个该怎么改,能使用intent么??
你可以给这个layout一个构造函数
在其他activity创建它的时候传入一个context
例如:
Activity里
GameView g=new GameView(this);
GameView里
Context context;//以后就用这个context就可以了
public GameView(Context context){
this.context=context;
}
我修改了之后,没报错了,可是运行的时候当点击它的时候直接退出了。没有达到我想要的效果,求大神再费神分析下
if(complete){
new AlertDialog.Builder(getContext())
.setTitle("你好")
.setMessage("游戏结束")
.setPositiveButton("重新开始", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent intent=new Intent(GameView.context,FinishGame.class);
GameView.context.startActivity(intent);
}
}).show();
}
}
static Context context;//以后就用这个context就可以了
public void GameView(Context context){
this.context=context;
}
#18
你代码写的好乱
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
#19
你代码写的好乱
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转
你代码写的好乱
public void GameView(Context context){
this.context=context;
}
context你有赋值么
其次你的GameView不是有构造方法么:
public GameView(Context context) {
super(context);
initGameView();
this.context=context;
}
确保是用可见activity进行跳转,不是乱跳转