7

私はLinearLayoutいくつかButtonsとを持っていTextViewsます。赤から白、赤など、一定の間隔で背景を点滅させたいです。現在、このコードを試していますが、nullポインター例外が発生します。

LinearLayout ll = (LinearLayout) findViewById(R.layout.activity_main);
Animation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(50); 
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
ll.startAnimation(anim); // shows null pointer exception at this line

どこが間違っているのか助けてください。

4

2 に答える 2

22

ここで間違ったViewIDを指定しましたfindViewById(R.layout.activity_main)。次のようになります。

findViewById(R.id.your_view_id);

setContentView(R.layout.activity_main)また、直後に必ず電話してください。super.onCreate

編集

これは、背景色のみを任意の色に変更できるコードです。AnimationDrawable.start()から呼び出すとうまくいかないActivity.onCreateようなので、ここで使用する必要がHandler.postDelayedあります。

final LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
final AnimationDrawable drawable = new AnimationDrawable();
final Handler handler = new Handler();

drawable.addFrame(new ColorDrawable(Color.RED), 400);
drawable.addFrame(new ColorDrawable(Color.GREEN), 400);
drawable.setOneShot(false);

layout.setBackgroundDrawable(drawable);
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        drawable.start();
    }
}, 100);
于 2013-03-11T04:53:12.793 に答える
5

これを試して

LinearLayout ll = (LinearLayout) findViewById(R.id.activity_main);
Animation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(50); 
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
ll.startAnimation(anim);

activity_mainがXMLファイル名の場合

setContentView(R.layout.activity_main);

ここでレイアウトIDを使用します

LinearLayout ll = (LinearLayout) findViewById(R.id.linear_layout_id);
于 2013-03-11T04:57:13.533 に答える