2012-10-02 44 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時,活動開始了。