2016-03-18 2 views
-1

ребята! У меня была проблема с этой ошибкой java: не удалось найти символ в моем проекте приложения Android. Я не знаю, где ошибка, вызвавшая проблему. Вот мои сведения о файлах:Ошибка Android не найден символ

navigation_bar_layout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/navigation_bar" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:background="#515151" 
      android:layout_alignParentTop="true"> 
<!--Back--> 
<ImageView android:id="@+id/back_icon" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:padding="5dp" 
      android:layout_centerVertical="true" 
      android:layout_alignParentLeft="true" 
      android:src="@drawable/back_icon"/> 
<!--Title--> 
<TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true"/> 
<!--Menu--> 
<ImageView 
     android:id="@+id/menu" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:padding="5dp" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true"/> 
</RelativeLayout> 

NavigationBar.java:

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView;  

public class NavigationBar extends RelativeLayout implements OnClickListener{ 
public NavigationBar(Context context){ 
    this(context, null); 
} 

private ImageView backImageView; 
private TextView titleView; 
private ImageView menuImageView; 

public NavigationBar(Context context, AttributeSet attrs){ 
    super(context, attrs); 

    View view  = LayoutInflater.from(context).inflate(R.layout.navigation_bar_layout, this, true); 
    backImageView = (ImageView) view.findViewById(R.id.back_icon); 
    titleView  = (TextView) view.findViewById(R.id.title); 
    menuImageView = (ImageView) view.findViewById(R.id.menu); 

    backImageView.setOnClickListener(this); 
    menuImageView.setOnClickListener(this); 
} 


public ImageView getBackImageView(){ return backImageView; } 
public TextView getTitleView(){ return titleView; } 
public ImageView getMenuImageView(){ return menuImageView; } 

public void setTitle(String title){ titleView.setText(title); } 

private ClickCallBack clickCallBack; 
public void setClickCallBack(ClickCallBack clickCallBack){ this.clickCallBack = clickCallBack; } 
public static interface ClickCallBack{ 
    void onBackClick();  
    void onMenuClick();  
} 

@Override 
public void onClick(View v) { 
    int id = v.getId(); 
    if(id == R.id.back_icon){ 
     clickCallBack.onBackClick(); 
     return; 
    } 
    if(id == R.id.menu){ 
     clickCallBack.onMenuClick(); 
     return; 
    } 
    } 
} 

И вот консоль ошибок:

Error:(24, 9) java: cannot find symbol 
symbol: variable backImageView 
location: class com.example.MyFirstAndroidApp.NavigationBar 
Error:(24, 37) java: cannot find symbol 
symbol: variable view 
location: class com.example.MyFirstAndroidApp.NavigationBar 
Error:(25, 36) java: cannot find symbol 
symbol: variable view 
location: class com.example.MyFirstAndroidApp.NavigationBar 
Error:(26, 37) java: cannot find symbol 
symbol: variable view 
location: class com.example.MyFirstAndroidApp.NavigationBar 

Любые идеи?

+1

Очистите ваш проект, прежде чем бежать – Amy

+1

одна вещь, которую я вижу, что вы даете RelativeLayout на attribut layout_alignParentTop, но это, кажется, RelativeLayout быть родителем ... – Opiatefuchs

+0

Но я предполагаю, что вы импортировали неправильный файл R. (или нет). если есть импорт android.R, удалите его и импортируйте свой файл R. .. – Opiatefuchs

ответ

2

LayoutInflater - это термин, используемый в контексте Android, чтобы указать, когда разворачивается ресурс макета XML и преобразуется в иерархию объектов View.

Вы должны попробовать с

View view = LayoutInflater.from(context).inflate(R.layout.navigation_bar_layout,null); 

Тогда Clean-Rebuild Ваш проект.

Для вашего второго вопроса, Вы должны проверить Layout Inflation as Intended

+1

Ну, хотя у меня нет четкого понимания разницы между ними, и я потрачу много времени, чтобы внимательно прочитать API. В любом случае, большое спасибо! –