6

ボタンを押した瞬間、画像は常に電話ですが、押したボタンに応じてこの画像を変更できるようにしたいのです。

例えば。ボタン imageButton1 が押された通知画像を車に設定します

NotificationManager nm;
static final int uniqueID = 101;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button stat = (Button) findViewById(R.id.btnSet);
    stat.setOnClickListener(this);
    ImageButton img1 = (ImageButton) findViewById(R.id.imageButton1); 
    img1.setOnClickListener(this);
    ImageButton img2 = (ImageButton) findViewById(R.id.imageButton2); 
    img2.setOnClickListener(this);
    ImageButton img3 = (ImageButton) findViewById(R.id.imageButton3); 
    img3.setOnClickListener(this);
    ImageButton img4 = (ImageButton) findViewById(R.id.imageButton4); 
    img4.setOnClickListener(this);
    ImageButton img5 = (ImageButton) findViewById(R.id.imageButton5); 
    img5.setOnClickListener(this);
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    nm.cancel(uniqueID);
}

@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
    int picture = R.drawable.phone;
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.imageButton1:
        // do something
        picture = (R.drawable.car);
        break;
    case R.id.imageButton2:
        // do something else
        picture = (R.drawable.clock);
        break;
    case R.id.imageButton3:
        // do something else
        picture = (R.drawable.globe);
        break;
    case R.id.imageButton4:
        // do something else
        picture = (R.drawable.little_tv);
        break;
    case R.id.imageButton5:
        // do something else
        //setImageResource(R.drawable.phone);
        break;
    case R.id.btnSet: 
     // do something else
        EditText etT = (EditText) findViewById(R.id.etTitle);
        EditText etB = (EditText) findViewById(R.id.etBody);
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
        String setTitle = etT.getText().toString();
        String setBody = etB.getText().toString();
        String body = setBody;
        String title = setTitle;
        Notification n = new Notification(picture, body, System.currentTimeMillis());
        n.setLatestEventInfo(this, title, body, pi);
        n.defaults = Notification.DEFAULT_VIBRATE;
        nm.notify(uniqueID, n);
        finish();
     break;
    }
}

}

4

1 に答える 1

3

onClick'picture'関数からの宣言と初期化を削除し、クラス変数として設定します。

理解を深めるために、以下を参照してください

NotificationManager nm;
static final int uniqueID = 101;
int picture;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Add below line here
    picture = R.drawable.phone;

    ...... All your code

}

@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
    // Remove below line
    // int picture = R.drawable.phone;

    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.imageButton1:
        // do something
        picture = (R.drawable.car);
        break;
    case R.id.imageButton2:
        // do something else
        picture = (R.drawable.clock);
        break;
    case R.id.imageButton3:
        // do something else
        picture = (R.drawable.globe);
        break;
    case R.id.imageButton4:
        // do something else
        picture = (R.drawable.little_tv);
        break;
    case R.id.imageButton5:
        // do something else
        //setImageResource(R.drawable.phone);
        break;
    case R.id.btnSet: 
     // do something else
        EditText etT = (EditText) findViewById(R.id.etTitle);
        EditText etB = (EditText) findViewById(R.id.etBody);
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
        String setTitle = etT.getText().toString();
        String setBody = etB.getText().toString();
        String body = setBody;
        String title = setTitle;
        Notification n = new Notification(picture, body, System.currentTimeMillis());
        n.setLatestEventInfo(this, title, body, pi);
        n.defaults = Notification.DEFAULT_VIBRATE;
        nm.notify(uniqueID, n);
        finish();
     break;
    }
}

あなたのコードbtnSetでは、「picture」変数をクリックするたびにR.drawable.phoneで初期化され、スイッチケースに従って「case R.id.btnset」が直接実行されます

あなたは私の言いたいことを理解したと思います

于 2012-07-27T10:38:39.703 に答える