应用程序和问题描述 我们正在尝试创建一个基于文本的 android 游戏(不要问 ;-)),但由于某种原因,我们无法通过意图启动新活动。我们的游戏从欢迎屏幕开始--> 新游戏(按钮)--> 类别选择(两个按钮,侦探/凶手)--> 第一个游戏活动
游戏内活动将包含一个图像视图、一个文本视图、一个继续按钮(导致下一个活动)和最常见的后退按钮(布尔值,取决于游戏/故事上下文)。
问题是,即使我们使用与从菜单到第一个游戏活动几乎相同的代码,我们也无法获得继续按钮来开始下一个活动?我们的想法是,我们同时拥有布局模板和内容模板,并且我们可以创建新的活动,我们只需为图片资源、字符串资源、后退按钮的布尔值和以下活动设置变量以“继续”开始。
代码 这是我们的代码:
内容模板:
package com.bsnoire;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class ContentTemplate extends Activity implements OnClickListener
{
protected int image, back, text;
protected Class<? extends Activity> cls;
@Override
public void onCreate(Bundle savedInstanceState)
{
setVariables();
super.onCreate(savedInstanceState);
setContentView(R.layout.content);
ImageView iv = (ImageView) findViewById(R.id.contentImageView);
TextView tv = (TextView) findViewById(R.id.contentTextView);
Button bBack = (Button) findViewById(R.id.contentbBack);
iv.setImageResource(image);
tv.setText(text);
bBack.setVisibility(back);
}
@Override
public void onDestroy()
{
this.finish();
}
//===============================================================================
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.contentbBack:
this.finish();
break;
case R.id.contentbCon:
Intent intent1 = new Intent(this, cls);
startActivity(intent1);
break;
}
}
public void setVariables()
{
}
}
Act1(即活动 1)
package com.bsnoire;
import com.bsnoire.R;
import android.app.Activity;
import android.os.Bundle;
public class Act1 extends ContentTemplate
{
/**
* Sets the variables in Act1
*/
@Override
public void setVariables()
{
image = R.drawable.p1;
back = 0;
text = R.string.A1S1;
cls = com.bsnoire.Act2.class;
}
}
Act2 将与 1 相同,但具有其他变量。在菜单中,我们使用以下代码(开关功能)引用 Act1:
case R.id.bAbout:
Intent intent2 = new Intent(MainMenu.this, Act1.class);
startActivity(intent2);
break;
哪个有效!
我们没有收到任何编译错误,也没有运行时错误。在 Act1 中按“继续”时没有任何反应,除了手指单击时的绿色标记。