应用程序&问题描述 我们正在尝试创建一个基于文本的Android游戏(不要问;-)),并且由于某种原因我们无法通过意图开始新的活动。我们的游戏以欢迎屏幕开始 - >新游戏(按钮) - >选课(两个按钮,侦探/凶手) - >第一场比赛活动
游戏活动将包含一个图像视图,一个文本视图,一个继续按钮(导致下一个活动),最常见的是一个后退按钮(布尔值,取决于游戏/故事背景)。
问题是,我们无法使用继续按钮开始下一个活动,即使我们使用与从菜单到第一个游戏活动的几乎相同的代码?我们的想法是,我们有布局模板和内容模板,我们可以创建新的活动,我们只需设置图片资源的变量,字符串资源,后退按钮的布尔值以及以下活动以“继续”开始。
代码 这是我们的代码:
的ContentTemplate:
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中按“继续”时没有任何反应,除非手指点击绿色标记。
答案 0 :(得分:0)
也许这会有所帮助:
Button bCon = (Button) findViewById(R.id.contentbCon);
bCon.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent newscr = new Intent(ContentTemplate.this, NextClassYouWantToShow.class);
startActivity(newscr);
}
});
答案 1 :(得分:0)
我是Android和Android Studio的新手,但我有类似的问题,我能够解决。我不知道我的解决方案是如何或为什么起作用的,只是在我的情况下。我有一些活动开始很好,而其他活动没有。我注意到所有开始运行的活动都有onCreate
方法,只有 Bundle 作为输入,
protected void onCreate(Bundle savedInstanceState){
...
}
虽然没有开始的活动都是具有onCreate
方法且具有捆绑和 PersistableBundle 的ListActivities,
public void onCreate(Bundle savedInstanceState, PersistableBundle persistedState){
...
}
我使用Android Studio自动完成所有onCreate
方法,因此我不知道为什么它们会以不同的方式自动完成。但是,当我从非启动onCreate
方法中删除 PersistableBundle 时,活动就开始了。