Невозможно обратиться к неконечной переменной timePicker внутри внутреннего класса, определенного в другом методе. Где находится внутренний класс ?? - PullRequest
0 голосов
/ 06 августа 2011
      public class MainActivity extends Activity {
 TimePicker timePicker;

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

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

    //--Button view---
    Button btnOpen = (Button)findViewById(R.id.btnSet);
    btnOpen.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            Toast.makeText(getBaseContext(),
                    "Time selected:" + 
                    timePicker.getCurrentHour() + 
                    ":" + timePicker.getCurrentMinute(),
                    Toast.LENGTH_SHORT).show();
                       }
                 });
             }
           }




       somebody  explain me plz ? 

1 Ответ

0 голосов
/ 06 августа 2011
public class MainActivity extends Activity {
TimePicker timePicker;

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

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

//--Button view---
Button btnOpen = (Button)findViewById(R.id.btnSet);
btnOpen.setOnClickListener(new OnClickListener() // <------- Inner class
{
    public void onClick(View v)
    {
        Toast.makeText(getBaseContext(),
                "Time selected:" + 
                timePicker.getCurrentHour() + 
                ":" + timePicker.getCurrentMinute(),
                Toast.LENGTH_SHORT).show();
    }
 });

Вы создаете анонимный класс, который расширяет абстрактный OnClickListenerClass, предоставляя метод onClick.

Чтобы исправить, объявите timePicker как final .

final TimePicker timePicker = (TimePicker)findViewById(R.id.timePicker);
...