1

ボタンに関する問題に直面しています。onClickListener を内部に、if/else を onClick リスナー内に含むスイッチを作成しました。問題は、if ステートメント内でボタンの状態を変更しようとすると (背景色を変更したい)、エラーが発生することです。if/else ブレーキの外に同じ行を書くと、うまくいきます。私は何が欠けていますか?

編集: リソースは問題ありません。他のアクティビティでも機能します。問題は、risp1 と入力した場合です。Eclipse はいつものようにヒント ボックスを表示せず、「risp1 を型に解決できません」というエラーを表示します。アプリはクラッシュせず、機能しますが、ボタンの背景色が希望どおりに変更されません (透明な黒色になります)。

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;
4

1 に答える 1

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( + Shift+を押すOと、依存関係を自動的にインポートできます。)

于 2012-09-16T17:00:06.533 に答える