2012-09-16 48 views
1

我面臨按鈕的一個問題:我創建了一個帶有onClickListener開關裏面和的if/else裏面的onClick監聽器。 問題是,如果我嘗試修改if語句內的按鈕狀態(我想更改背景顏色),則會出現錯誤。 如果我在if/else brakets之外寫入相同的行,它可以工作。我錯過了什麼?按鈕誤差內開關+如果

編輯:資源是確定的,但它在其他活動的工作。問題是,如果我輸入risp1。 Eclipse不會給我一個提示框作爲usuale,並向我顯示錯誤「risp1無法解析爲類型」。 該應用程序不會崩潰,它的工作原理,但它不會改變botton的背景顏色,因爲我想(我得到一個透明的黑色)。

import java.util.Random; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class QScalata extends Activity{ 

SharedPreferences SPavanzamento; 
int ndomanda=0,caso; 
TextView domanda; 
public Button risp1,risp2,risp3,risp4; 
int intdomanda,scelta; 
String Domanda1[],Domanda2[],Domanda3[]; 
String RispQ1[] = null; 
String RispQ2[]= null; 
String RispQ3[]= null; 
String RispQ4[]= null; 

int esatto1[]={1,1,1}; 
int esatto2[]={1,1,1}; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.qscalata); 

    domanda = (TextView) findViewById(R.id.tvDomandaS); 
    risp1 = (Button) findViewById(R.id.b1S); 
    risp2 = (Button) findViewById(R.id.b2S); 
    risp3 = (Button) findViewById(R.id.b3S); 
    risp4 = (Button) findViewById(R.id.b4S); 

    Domanda1 = getResources().getStringArray(R.array.QScalata); 
    RispQ1 = getResources().getStringArray(R.array.RispQ1); 
    RispQ2 = getResources().getStringArray(R.array.RispQ2); 
    RispQ3 = getResources().getStringArray(R.array.RispQ3); 
    RispQ4 = getResources().getStringArray(R.array.RispQ4); 

    SPavanzamento = getSharedPreferences("avanzamento", 0); 

    Bundle extras = getIntent().getExtras(); 
    ndomanda = extras.getInt("extra"); 

    switch(ndomanda){ 
    case 1: 
     Random random= new Random(); 
     caso=random.nextInt(3); 
     domanda.setText(Domanda1[caso]); 
     risp1.setText(RispQ1[caso]); 
     risp2.setText(RispQ2[caso]); 
     risp3.setText(RispQ3[caso]); 
     risp4.setText(RispQ4[caso]); 

     risp1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       scelta=1; 
       if(scelta==esatto1[caso]){ 
        risp1.setBackgroundColor(65280); 
        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
         public void run() { 
          risp1.setBackgroundColor(R.color.transparent_bg); 
          SharedPreferences.Editor editor = SPavanzamento.edit(); 
          editor.putInt("avanzamento", 1); 
          editor.commit(); 
          Intent returnMenu = new Intent("metal.quiz.SCALATA"); 
          startActivity(returnMenu); 
         } 
        }, 1000); 

       }else{ 
        risp1.setBackgroundResource(R.drawable.red);  
       } 
       Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        public void run() { 
         finish(); 
        } 
       }, 1000); 
      } 
     }); 
     break; 
+0

您會得到什麼錯誤? – Araw

+0

如果您的應用程序崩潰,則應始終在您的問題中發佈LogCat錯誤。 – Sam

+0

「該應用不會崩潰,但它並不會改變底紋的背景顏色。」如果你沒有得到正確的背景顏色,你應該閱讀iccthedral的答案。 – Sam

回答

0

「risp1不能被解析爲一個類型」

這只是意味着你沒有正確申報risp1。我假設risp1是一個按鈕,所以你想一個類變量是這樣的:

public class MyActivity extends Activity { 
    // You forgot "Button" or whatever type risp1 should be 
    public Button risp1; 
    ... 

    public void onCreate(...) { 

加成 我明白了,你給出risp1一個類型,但你沒有導入搭配:

import android.widget.Button; 

(你可以按下Ctrl鍵+ + O自動導入您的依賴關係。)

+0

我做到了......我的按鈕沒有設置爲公開,但這樣做並沒有改變任何東西。這個問題只在onClickListener內部。 –

+0

按鈕已經導入:import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.view.View; 導入android。widget.Button; import android.widget.TextView; –

+0

請張貼更多你的代碼,特別是你聲明'risp1'的地方。 – Sam