Метод makeText в типе Toast неприменим для View.OnClickListe

Ответить
Аватара пользователя
Witaly_Pass
Сообщения: 4
Зарегистрирован: 13 июн 2012, 16:23
Откуда: Украина

Метод makeText в типе Toast неприменим для View.OnClickListe

Сообщение Witaly_Pass » 02 июл 2012, 23:10

Доброго времени суток. Не понимаю в чем проблема при вьізове Toast.makeText() в блоке OnClick().

Изображение

Пример набирал из книги Wei-Meng Lee - Beginning Android Application Development - 2011 (151 с.)


Весь код:

Код: Выделить всё

package net.learn2develop.BasicView;

import android.app.Activity;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.*;

public class MainActivity extends Activity {

	TimePicker timePicker;
	DatePicker datePicker;

	int hour, minute;
	static final int TIME_DIALOG_ID = 0;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		showDialog(TIME_DIALOG_ID);

		timePicker = (TimePicker) findViewById(R.id.timePicker1);
		timePicker.setIs24HourView(true);

		datePicker = (DatePicker) findViewById(R.id.datePicker1);

		Button btnOpen = (Button) findViewById(R.id.btnSet);
		btnOpen.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(
						this,
						datePicker.getMonth() + " : "
								+ datePicker.getDayOfMonth() + " : "
								+ datePicker.getYear() + "\n"
								+ timePicker.getCurrentHour() + " : "
								+ timePicker.getCurrentMinute(),
						Toast.LENGTH_LONG).show();
			}
		});

	}

	@Override
	protected Dialog onCreateDialog(int id) {
		// TODO Auto-generated method stub
		switch (id) {
		case TIME_DIALOG_ID:
			return new TimePickerDialog(this, mTimeSetListener, hour, minute,
					false);
		default:
			break;
		}
		return null;
	}

	TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {

		public void onTimeSet(TimePicker view, int hourOfDay, int minute2) {
			// TODO Auto-generated method stub
			hour = hourOfDay;

			minute = minute2;
			// Toast.makeText(this, "You have selected : " + hour + ":" +
			// minute,
			// Toast.LENGTH_SHORT).show();
		}
	};
}

PARTY HARD!

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Метод makeText в типе Toast неприменим для View.OnClickL

Сообщение AndreyI » 03 июл 2012, 00:17

Используйте вместо "this" getApplicationContext() или MainActivity.this

this это указатель на объект из которого он был вызван, в данном случае это объект OnClickListener(), а для Toast нужен указатель на объект Activity или Application.

Аватара пользователя
Witaly_Pass
Сообщения: 4
Зарегистрирован: 13 июн 2012, 16:23
Откуда: Украина

Re: Метод makeText в типе Toast неприменим для View.OnClickL

Сообщение Witaly_Pass » 03 июл 2012, 23:55

спасибо. помогло.
PARTY HARD!

Ответить