2014-04-12 69 views
0

這是一個棘手的問題。我將一個朋友的項目導入到了Eclipse中,並且它充滿了錯誤。起初有一個'罐子不匹配!'這是由於一個appcompat_v7庫(自動導入到每個由於22.6升級而使用的Eclipse項目)和一個android.support.app.v4庫衝突。所以我刪除了libs文件夾中的android.support.app.v4庫,因爲我看到v7還包含v4。這使得罐子不匹配消失了。但隨後在一個Activity中,ActionBarActivity作爲類擴展未被識別。我翻了一遍,它說我可以通過導入appcompat_v7修復它(這是奇怪的,因爲我認爲它已經在默認情況下,顯然是造成衝突)。所以我點擊它並導入它,那個錯誤消失了。更新的支持庫,現在資源文件無法被活動識別 - Android

但是現在,我的xml中的所有佈局名稱(即源於Activity中)都沒有被識別,即使名稱都是正確的並且代碼正確。例如

mSpnImageSize = (Spinner) findViewById(R.id.spnImageSize); 

spnImageSize上有錯誤,說,它不能被解析爲一個字段。但我知道xml文件很好,並在其中有該字段名稱。

這是怎麼發生的?該項目在我的朋友的電腦中完美運行,所以我不明白爲什麼它不適用於我的電腦。我還檢查了我的SDK包,它們都已導入(支持庫和我的項目所針對的API#以及其他許多API)。

自從我更新了Eclipse到22.6(可怕的更新)之後,我不能再導入其他人的項目而沒有所有這些瘋狂的錯誤。在此先感謝您的幫助。

這是我的活動文件和我的activity_layout文件,只是爲了表明他們沒問題。

package com.laurengariepy.android.gridimagesearch; 

import android.R; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.text.Selection; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 

public class FilterActivity extends ActionBarActivity { 

    protected static final String FILTERS = "FilterPreferences"; 

    private Spinner mSpnImageSize, 
        mSpnColorFilter, 
        mSpnImageType; 
    private EditText mEtSiteFilter; 
    private Button mBtnSave; 

    private ArrayAdapter<CharSequence> aImageSizeAdapter, 
             aColorFilterAdapter, 
             aImageTypeAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_filter); 

     setupViews(); 
     restoreFilterPreferences(); 
     setCursor(); 
    } 

    private void setupViews() { 
     mSpnImageSize = (Spinner) findViewById(R.id.spnImageSize); 
     aImageSizeAdapter = ArrayAdapter.createFromResource(this, R.array.image_size_options, 
       android.R.layout.simple_spinner_item); 
     aImageSizeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     mSpnImageSize.setAdapter(aImageSizeAdapter); 

     mSpnColorFilter = (Spinner) findViewById(R.id.spnColorFilter); 
     aColorFilterAdapter = ArrayAdapter.createFromResource(this, R.array.color_filter_options, 
       android.R.layout.simple_spinner_item); 
     aColorFilterAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     mSpnColorFilter.setAdapter(aColorFilterAdapter); 

     mSpnImageType = (Spinner) findViewById(R.id.spnImageType); 
     aImageTypeAdapter = ArrayAdapter.createFromResource(this, R.array.image_type_options, 
       android.R.layout.simple_spinner_item); 
     aImageTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     mSpnImageType.setAdapter(aImageTypeAdapter); 

     mEtSiteFilter = (EditText) findViewById(R.id.etSiteFilter); 

     mBtnSave = (Button) findViewById(R.id.btnSave); 
     mBtnSave.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(); 
       setResult(RESULT_OK, i); 
       finish(); 
      } 
     }); 
    } 

    private void restoreFilterPreferences() { 
     SharedPreferences filters = getSharedPreferences(FILTERS, 0); 

     int imageSizeSelection = filters.getInt("image_size", 0); 
     mSpnImageSize.setSelection(imageSizeSelection); 

     int colorFilterSelection = filters.getInt("color_filter", 0); 
     mSpnColorFilter.setSelection(colorFilterSelection); 

     int imageTypeSelection = filters.getInt("image_type", 0); 
     mSpnImageType.setSelection(imageTypeSelection); 

     String siteFilterSelection = filters.getString("site_filter", mEtSiteFilter.getHint().toString()); 
     mEtSiteFilter.setText(siteFilterSelection); 
    } 

    private void setCursor() { 
     int position = mEtSiteFilter.length(); 
     Selection.setSelection(mEtSiteFilter.getText(), position); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     saveFilterPreferences(); 
    } 

    private void saveFilterPreferences() { 
     SharedPreferences filters = getSharedPreferences(FILTERS, 0); 
     SharedPreferences.Editor editor = filters.edit(); 
     editor.putInt("image_size", mSpnImageSize.getSelectedItemPosition()); 
     editor.putInt("color_filter", mSpnColorFilter.getSelectedItemPosition()); 
     editor.putInt("image_type", mSpnImageType.getSelectedItemPosition()); 
     editor.putString("site_filter", mEtSiteFilter.getText().toString()); 
     editor.commit(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.filter, menu); 
     return true; 
    } 

} 

附帶的xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/tvFilterHeader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_margin="10dp"  
     android:textStyle="bold" 
     android:textSize="22sp" 
     android:text="@string/tv_filter_header" /> 

    <TextView 
     android:id="@+id/tvImageSize" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/tvFilterHeader" 
     android:layout_margin="10dp" 
     android:textSize="18sp" 
     android:text="@string/tv_image_size" /> 

    <Spinner 
     android:id="@+id/spnImageSize" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignBottom="@+id/tvImageSize" 
     android:layout_toRightOf="@+id/tvImageSize" 
     android:textSize="18sp" 
     android:spinnerMode="dropdown" /> 

    <TextView 
     android:id="@+id/tvColorFilter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/tvImageSize" 
     android:layout_margin="10dp" 
     android:textSize="18sp" 
     android:text="@string/tv_color_filter" /> 

    <Spinner 
     android:id="@+id/spnColorFilter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignBottom="@+id/tvColorFilter" 
     android:layout_toRightOf="@+id/tvColorFilter" 
     android:textSize="18sp" 
     android:spinnerMode="dropdown" /> 

    <TextView 
     android:id="@+id/tvImageType" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/tvColorFilter" 
     android:layout_margin="10dp" 
     android:textSize="18sp" 
     android:text="@string/tv_image_type" /> 

    <Spinner 
     android:id="@+id/spnImageType" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignBottom="@+id/tvImageType" 
     android:layout_toRightOf="@+id/tvImageType" 
     android:textSize="18sp" 
     android:spinnerMode="dropdown" /> 

    <TextView 
     android:id="@+id/tvSiteFilter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/tvImageType" 
     android:layout_margin="10dp" 
     android:textSize="18sp" 
     android:text="@string/tv_site_filter" /> 

    <EditText 
     android:id="@+id/etSiteFilter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/tvSiteFilter" 
     android:layout_toRightOf="@+id/tvSiteFilter" 
     android:ems="10" 
     android:hint="@string/et_filter_hint" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/btnSave" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tvSiteFilter" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="36dp" 
     android:text="@string/btn_save" /> 

</RelativeLayout> 
+0

必須有你的資源文件中的錯誤。 R.java沒有生成。修復錯誤並清理並構建項目 – Raghunandan

+0

感謝Raghunandan ......這就是你會想到的,但我告訴你,這是我朋友的項目,它在他的電腦上工作得很好。還有別的東西,奇怪的就在這裏。我會發布我的文件來證明,他們沒問題......我希望它很簡單,誠實。 :/ – Azurespot

+1

剛發現這個錯誤 – Raghunandan

回答

1

刪除此

import android.R; 

您從Android框架進口R上。

相反,它應該是

import com.laurengariepy.android.gridimagesearch.R; 
// your packagename.R 
+0

噢,非常感謝!你知道這是怎麼發生的,當我認爲所有的錯誤都是導入問題時(他們都是這樣),我做了shift + command + O,並且'import android.R;'事情自己出現了。然後我忘了,甚至發生了,因爲我花了一段時間才弄清楚圖書館的問題。但這是拼圖的最後一塊。非常感謝你! – Azurespot

+0

@NoniA。不客氣。 – Raghunandan