Android意图不会启动下一个活动

时间:2012-10-02 13:39:22

标签: android templates android-intent android-activity

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

2 个答案:

答案 0 :(得分: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); } });

答案 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 时,活动就开始了。