2010-08-15 19 views
16

Kendi Tokenizer tabanımı " MultiAutoCompleteTextView.java "dosyasına uygulamak istiyorum"MultiAutoCompleteTextView.java 'android dosyasını kullandığımda" com.android.internal.R çözümlenemedi "hatası nasıl giderilir?

ama "com.android.internal.R cannot be resolved" Ben

ithalat "MultiAutoCompleteTextView.java" çalışırken projeye hatayla karşılaşıyorum.

kodu:

public class MultiAutoCompleteTextView extends AutoCompleteTextView { 
    private Tokenizer mTokenizer; 

    public MultiAutoCompleteTextView(Context context) { 
     this(context, null); 
    } 

    public MultiAutoCompleteTextView(Context context, AttributeSet attrs) { 
     this(context, attrs, com.android.internal.R.attr.autoCompleteTextViewStyle); 
    } 

    public MultiAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle)  { 
     super(context, attrs, defStyle); 
    } 
    . 
    . 
    . 
} 

Ben "com.android.internal.R.attr.autoCompleteTextViewStyle" Kendi attr düzeltmek için bu problem.How çözmek için herhangi bir çözüm araştırma değil mi?

Önerileriniz için teşekkür ederiz.

+0

ctrl + 0? – Techboy

+0

Kendiniz bildirmeden SDK'nın içinde düz "MultiAutoCompleteTextView" kullanamazsınız? – rciovati

cevap

0

internal'dan içe aktarıp başvurabileceğinizden emin değilim. Bir geçici çözüm olarak, android kaynağındaki referansları indirin ve kendi kaynaklarınıza dahil edin ve paketinizden referans alın.

+0

Yanıtınız için teşekkür ederiz. Bu java profilindeki bazı yöntemleri yöntemlerime değiştirmek ve projeme aktarmak istiyorum. Ancak bu cümlede bu hatayı düzeltemiyorum "(context, attrs, com.android.internal.R.attr.autoCompleteTextViewStyle) " – huaigu

+1

Dahili paketi alarak" com.android.R.attr.autoCompleteTextViewStyle "'a yeniden yazmayı denediniz mi? – Pentium10

+0

Bu dosyayı yeniden yazmayı denemiyorum ve bu dosyayı bulamıyorum ... – huaigu

3

attrs.xml den attr girişi kopyalamayı deneyin:

<attr name="autoCompleteTextViewStyle" format="reference" /> 

uygulamanıza bir res/values/attrs.xml ekleyin ve orada bu satırı koydu. Son olarak, paketten R başvurmak için kodunuzu güncelleyin: inazaruk için

import com.your.package.R; 
... 
public MultiAutoCompleteTextView(Context context, AttributeSet attrs) { 
    this(context, attrs, R.attr.autoCompleteTextViewStyle); 
} 

Kredi bu prosedür için.

11

Sen derleme zamanında com.android.internal.R ait kimliklerini erişemez

public MultiAutoCompleteTextView(Context context, AttributeSet attrs) { 
     this(context, attrs, 
     Resources.getSystem().getIdentifier("autoCompleteTextViewStyle", "attr", "android"); 
    } 

kullanabilirsiniz, ancak çalışma zamanında tanımlanmış iç kaynaklara erişmek ve adıyla kaynağı alabiliyor. Bunun doğrudan erişime göre daha yavaş olduğunu ve hiçbir garanti olmadığını, gelecekteki bir Android sürümünde veya satıcıya özgü yapılarda bir dahili kaynağın bulunabileceğini bilmelisiniz.

+1

() bir kurucudaki ilk satır olmalıdır. Bununla birlikte, id değişkenini satır içi, yani: 'public MultiAutoCompleteTextView (Bağlam içeriği, AttributeSet) attrs) { this (context, attrs, Resources.getSystem(). getIdentifier ("autoCompleteTextViewStyle", "attr", "android")); } ' – k2col

+0

Tabii ki haklısınız, cevabı değiştirdim, teşekkürler – yonojoy

1

Evet, Java yansıması ile dahili R'yi kullanabilirsiniz.

autoCompleteTextViewStyle almak için:

int id = Resources.getSystem().getIdentifier("config_sms_capable", "bool", "android"); 
    Resources res = Resources.getSystem(); 
    boolean configSMSCapable = res.getBoolean(id); 
    TextView displayText = findViewById(R.id.displayText); 
    String configSMSCapableString = configSMSCapable ? "TRUE" : "FALSE"; 
    displayText.setText("config_sms_capable = " + configSMSCapableString); 
:

Class clasz = Class.forName("com.android.internal.R$attr") 
Field field = clasz.getDeclaredField("autoCompleteTextViewStyle"); 
field.setAccessible(true); 
int autoCompleteTextViewStyle= (int)field.get(null); 

Daha önce olduğu gibi söz konusu, bu şekilde kesmek, genellikle Android Bu işleri

+0

Yansıma çalışma zamanı cezalarına neden oluyor. –

1

android.R

dayalı benzer veya aynı kamu stili sağlar

İstediğiniz değişkeni aynı şekilde belirtmeniz gerekir.

İlgili konular