2015-08-18 2 views
3

Я новичок в Android развития и после Vogella Введение в разработке Android с Android Studio - Учебник, расположенный здесь:Vogella Android Tutorial, компилятор ошибки в Android Studio

http://www.vogella.com/tutorials/Android/article.html#androidstudio_starter

я начал иметь проблему на этапе 19.4 и далее. У меня есть тот же код, что и в учебнике, но Android Studio показывает ошибку в MainActivity.java, заявляя, что не может разрешить символ «Constants», а сборка завершается с ошибкой компилятора. Я хотел бы знать, чего я пропускаю, поскольку каждый шаг соблюден, и все коды соответствуют указанным в учебнике.

MainActivity.java

package com.deluxaur.testapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Toast; 
import android.widget.EditText; 


public class MainActivity extends Activity { 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (BuildConfig.DEBUG) { 
     Log.d(Constants.LOG, "onCreated called"); 
    } 
    setContentView(R.layout.activity_main); 
} 

public void onCLick(View view) { 
    EditText input = (EditText) findViewById(R.id.main_input); 
    String string = input.getText().toString(); 
    Toast.makeText(this, "Button 1 pressed", Toast.LENGTH_LONG).show(); 
} 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context=".MainActivity"> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/main_input" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="true" 
    /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Start" 
    android:id="@+id/button" 
    android:layout_alignLeft="@+id/main_input" 
    android:layout_below="@+id/main_input" 
    android:layout_marginTop="31dp" 
    android:onClick="onClick" 
    /> 

ответ

2

Это просто сказать, что Константы класс не распознается. Есть много способов исправить это.

  1. Вы можете создать Константы класса со статической переменной LOG струны в нем

    public class Constants { 
        public static final String LOG = "MyLogTag"; 
    } 
    
  2. Следующий код не является обязательным и не требуется для функционирования программы. Это поможет вам предоставить дополнительные журналы, чтобы вы могли лучше понимать, что происходит в вашем приложении, но это необязательно.

    //These three lines are optional 
    if (BuildConfig.DEBUG) { 
        Log.d(Constants.LOG, "onCreated called"); 
    } 
    
  3. Или вы можете просто сменить строковый ключ. Метод Log.d() принимает два String s, первый используется для тега, а второй - это сообщение. Если вы просто укажете еще один действительный String, он будет работать нормально.

    if (BuildConfig.DEBUG) { 
        Log.d("A KEY", "onCreated called"); 
    } 
    
+0

Все 3 из этих вариантов решить эту проблему с компиляции и запуска приложения, но я только сейчас заметил, что Android-студия показывает предупреждения в MainActivity.java о том, что метод 'OnClick (android.view. view) 'никогда не используется, а переменная' string' в строке 'String string = input.getText(). toString();' никогда не используется. При запуске приложения отображается макет, и текстовое поле вводит ввод, но при нажатии кнопки происходит сбой. Снова я что-то упустил или устарел у учебника? – deluxaur

+0

Ваш вопрос уже вышел из этой области, и ответ не влияет на какие-либо другие функции. Ответ уже просто ответил на вопрос .. вы можете создать новое сообщение для этой проблемы.^__ ^. – Sheychan

+0

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

Смежные вопросы