0

質問は申し訳ありませんが、Androidの初心者です。別のクラスを呼び出すImageViewのソースを変更したいのですが、アプリケーションが閉じます。

ソースコード:

public class JugarActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_jugar);
    int nivel = 1;

    Niveles crearnivel = new Niveles();
    crearnivel.CrearNivel(nivel);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_jugar, menu);
    return true;
}

}

クラス:

public class Niveles extends JugarActivity {
ImageView pregunta = (ImageView) findViewById(R.id.imagePregunta);
ImageView respuestaA = (ImageView) findViewById(R.id.imageRespuesta1);
ImageView respuestaB = (ImageView) findViewById(R.id.imageRespuesta2);
ImageView respuestaC = (ImageView) findViewById(R.id.imageRespuesta3);
ImageView respuestaD = (ImageView) findViewById(R.id.imageRespuesta4);

public void CrearNivel(int nivel) {
    if(nivel == 1) {
        pregunta.setImageResource(R.drawable.pregunta1); 
        respuestaA.setImageResource(R.drawable.pregunta1_a); 
        respuestaB.setImageResource(R.drawable.pregunta1_b); 
        respuestaC.setImageResource(R.drawable.pregunta1_c); 
        respuestaD.setImageResource(R.drawable.pregunta1_d); 
    }
}
}

どうしたの?ありがとう

4

1 に答える 1

1

Activity クラスを拡張する代わりに、非クラスで imageView にアクセスするための現在の Activity コンテキストを渡すためのコンストラクターを作成できます。クラスを次のように変更します。

public class Niveles {
Activity activity;

public Niveles(Activity activity){
  this.activity=activity;
}

ImageView pregunta = (ImageView)activity.findViewById(R.id.imagePregunta);
ImageView respuestaA = (ImageView)activity. findViewById(R.id.imageRespuesta1);
ImageView respuestaB = (ImageView)activity. findViewById(R.id.imageRespuesta2);
ImageView respuestaC = (ImageView)activity. findViewById(R.id.imageRespuesta3);
ImageView respuestaD = (ImageView)activity. findViewById(R.id.imageRespuesta4);

public void CrearNivel(int nivel) {
    if(nivel == 1) {
        pregunta.setImageResource(R.drawable.pregunta1); 
        respuestaA.setImageResource(R.drawable.pregunta1_a); 
        respuestaB.setImageResource(R.drawable.pregunta1_b); 
        respuestaC.setImageResource(R.drawable.pregunta1_c); 
        respuestaD.setImageResource(R.drawable.pregunta1_d); 
    }
}
}

アクティビティ コンテキストを Niveles に渡します。

Niveles crearnivel = new Niveles(this);
crearnivel.CrearNivel(nivel);
于 2013-01-29T16:43:19.367 に答える