2013-12-02 2 views
0

У меня есть следующий код, который используется для создания пользовательского ListView в моем приложении с двумя вкладками:GetResources() бросает ошибку

package com.test.testing; 

import android.content.Context; 
import android.text.Html; 

public class SetRows { 
    int image; 
    String name; 
    String id; 

    public int getImage() { 
     return image; 
    } 

    public void setImage (int image) { 
     this.image = image; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName (String name) { 
     this.name = name; 
    } 

    public String getID() { 
     return id; 
    } 

    public void setID (String id) { 
     this.id = id; 
    } 

    public SetRows(int image, String name, String id) { 

     super(); 
     this.image = image; 
     this.name = Html.fromHtml(getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name; 
     this.id = "MEANS: \n\t" + id; 
    } 

} 

Следующая строка:

this.name = Html.fromHtml(getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name;

дает мне следующую ошибку:

The method getResources() is undefined for the type SetRows

ответ

1

Вам необходимо изменить свой код, чтобы у вас была ссылка на текущий контекст, который, в свою очередь, даст вам доступ к getResources.

Например

public SetRows(Context currentContext,int image, String name, String id) { 

     super(); 

     this.image = image; 
     this.name = Html.fromHtml(currentContext.getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name; 
     this.id = "MEANS: \n\t" + id; 
    } 

Вы должны были бы изменить создание экземпляра класса

contents.add(new SetRows(this,inIconShow, sColor, sExplain)); 
+0

Что вы должны изменить к содержанию. add (новые SetRows (это, inIconShow, sColor, sExplain)); – DigCamara

+0

СПАСИБО! :) играл вокруг и исправил его ... – Si8

1

Когда вы делаете

getResources() 

это означает

this.getResources() 

Здесь этот является экземпляром SetRows (ваш класс), и ваш класс SetRows не имеет метода с именем getResources.

Это то, что означает ошибка.

+0

Это не помогло, я все еще вижу ошибку. – Si8

+0

Что не сработало? Я просто объяснил, что означает ошибка. –

+0

См. Ответ от ZouZou и/или DigCamara, может быть более полезным. –

1

getResources() - метод, доступный для всех классов, который расширяет класс Context. У вашего класса нет.

Общим обходным путем является передача экземпляра вашего context при создании объекта SetRows.

public SetRows(Context context, int image, String name, String id) { 

     super(); 
     this.image = image; 
     this.name = Html.fromHtml(context.getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name; 
     this.id = "MEANS: \n\t" + id; 
    } 

Тогда в вашей деятельности, вы можете просто сделать:

new SetRows(this, /****/); 
+0

Я играл и исправил это. благодаря – Si8

1

Pass в Context через конструктор и называют:

context.getResources(...); 
Смежные вопросы