0

应用程序和问题描述 我们正在尝试创建一个基于文本的 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 中按“继续”时没有任何反应,除了手指单击时的绿色标记。

4

2 回答 2

0

也许这会有所帮助:

  1. Button bCon = (Button) findViewById(R.id.contentbCon);

  2. bCon.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent newscr = new Intent(ContentTemplate.this, NextClassYouWantToShow.class); startActivity(newscr); } });

于 2012-10-02T14:07:13.823 回答
0

我是 android 和 Android Studio 的新手,但我遇到了我能够解决的类似问题。我不知道我的解决方案如何或为什么起作用,只知道它在我的情况下起作用。我有一些活动开始得很好,而另一些则没有。我注意到所有开始正常的活动都有onCreate只有一个Bundle作为输入的方法,

 protected void onCreate(Bundle savedInstanceState){
     ...
 }

虽然没有开始的活动都是 ListActivities ,它们的onCreate方法带有BundlePersistableBundle

public void onCreate(Bundle savedInstanceState, PersistableBundle persistedState){
  ...
}

我使用 Android Studio 自动完成我的所有onCreate方法,所以我不知道为什么它们的自动完成方式不同。但是,当我从非启动方法中删除PersistableBundleonCreate时,活动开始了。

于 2016-06-22T14:29:35.730 回答