Нелегальное начало выражения? - PullRequest
3 голосов
/ 13 июня 2010

Я пытаюсь создать простое приложение для Android, которое увеличивает число, отображаемое при каждом нажатии кнопки, но я не могу решить, как исправить ошибку «Недопустимое начало выражения», которую я продолжаю получать.

Мой код:

package com.clicker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class Clicker extends Activity
{
    private int clickerNumber = 0;
    private TextView clickerText;
    private Button clickerButton;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        clickerText = (TextView)findViewById(R.id.clickerText);
        final Button clickerButton = (Button)findViewById(R.id.clickerButton);
             clickerButton.setOnClickListener(new View.OnClickListener());
                {
                 public void onClick();
                    {
                    clickerNumber = clickerNumber++;
                    clickerText.setText(Integer.toString(clickerNumber));
                    }
                }
    }
}

И вывод компилятора:

compile:
[javac] Compiling 2 source files to /home/fraser/Applications/Android/Code/Clicker/bin/classes
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:24: ')' expected
[javac]              clickerButton.setOnClickListener(new View.OnClickListener();
[javac]                                                                         ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:26: illegal start of expression
[javac]                  public void onClick();
[javac]                  ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:26: illegal start of expression
[javac]                  public void onClick();
[javac]                         ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:26: ';' expected
[javac]                  public void onClick();
[javac]                                     ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:29: ';' expected
[javac]                     clickerText.setText(Integer.toString(clickerNumber)));
[javac]                                                                         ^
[javac] 5 errors

Ответы [ 2 ]

4 голосов
/ 13 июня 2010

У вас есть нежелательные точки с запятой:

clickerButton.setOnClickListener(new View.OnClickListener());

public void onClick();

Чтобы исправить синтаксические ошибки, вы хотите что-то вроде этого:

clickerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick() {
        clickerNumber = clickerNumber + 1;
        clickerText.setText(Integer.toString(clickerNumber));
    }
});

Кажется, что ваш отступ неправильный, что может быть отчасти причинойпутаница.Используйте автоматический отступ вашего редактора, чтобы поймать множество этих типов ошибок.

Но учтите, что приведенный выше код все равно не будет работать, потому что внутри анонимного класса вы не можете получить доступ к локальным переменным, которые не являются окончательными.Таким образом, вы не можете получить доступ к clickerNumber.Если вы сделаете это окончательно, это тоже вам мало поможет, потому что тогда вы не сможете изменить его значение.Вы можете добавить счетчик в переменную-член.

Я также рекомендовал бы, прежде чем пытаться написать приложение для Android, сначала ознакомьтесь со стандартным учебным пособием по Java и убедитесь, что вы понимаете базовый синтаксис Java.Вы обнаружите, что в большинстве учебных пособий по Android предполагается, что вы уже хорошо разбираетесь в написании стандартных Java-приложений.

2 голосов
/ 13 июня 2010

Я заметил одну вещь, вам не нужно:

clickerNumber = clickerNumber++;

потому что оператор ++ обрабатывает присваивание. Попробуйте просто:

clickerNumber++;

Хотя я должен упомянуть, что это не является причиной вашей проблемы, я думаю, просто совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...