2012-10-02 40 views
0

应用&问题说明 我们正在努力建立一个基于文本的安卓游戏(不要问;-)),而且我们有开始麻烦出于某种原因通过意图进行的新活动。我们的游戏以欢迎屏幕开始 - >新游戏(按钮) - >课程选择(两个按钮,侦探/凶手) - >第一个游戏活动Android的意图不会开始下一个活动

游戏活动将包含一个imageview,一个文本视图一个继续按钮(导致下一个活动),最常见的是后退按钮(布尔值,取决于游戏/故事情景)。

问题是,即使我们使用与从菜单到第一个游戏活动的代码几乎相同的代码,我们无法继续按钮开始下一个活动?我们的想法是,我们有布局模板和内容模板,并且我们可以创建新的活动,在这些活动中,我们只为图片资源设置变量,字符串资源,后退按钮的布尔值以及以下活动由“继续”开始。

代码 这是我们的代码:

的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

我应该提到,我们已经尝试了对Act1和Act2进行硬编码(删除了我们只需设置变量的'通用'方面,然后重复所有内容)。这导致了Act1中完全相同的静止状态。 – jhm

+0

添加OnClickListener到你的按钮...,我认为你必须添加日志来查看你的onClick是否被调用。 –

+0

谢谢,但尝试后,它没有帮助。此外,日志消息不会在logcat中显示,只会显示一些标准消息:“onTouchEvent”。 我们发现奇怪的是,当设备注册了触摸输入,但是不会写入我们的日志,它只是在声明并在侦听器中发送意图之前放置的。 (我们使用命令Log.d(“BSNoire”,“继续按钮点击”)) – jhm

回答

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); } });

+0

谢谢,zkminusck,你有与Anis在#0注释中一样的想法。可悲的是,它没有奏效。没有改变,没有新的错误。 – jhm

0

我是新来的Android和Android工作室,但我有我能类似问题解决。我不知道我的解决方案如何或为什么起作用,只是它在我的情况下。我有一些活动开始很好,其他活动没有开始。我注意到,所有的开始精细的活动有onCreate方法只有一个捆绑作为输入,

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

虽然未开始都ListActivities是有onCreate方法有捆绑活动PersistableBundle

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

我使用过Android Studio来自动完成我所有的onCreate方法,所以我不知道他们为什么自动并发症不同地被采取但是,当我从非启动onCreate方法中删除PersistableBundle时,活动开始了。