2012-12-04 64 views
2

我使用一些代碼從網站的CoverFlow,的CoverFlow沒有顯示XML的佈局,Android的

http://www.inter-fuser.com/2010/01/android-coverflow-widget.html

normal working coverflow

這CoverFlow的偉大工程,沒有任何問題。然而,當我試圖把它放入一個xml佈局時,它不會顯示出來,只有coverflow的黑色背景壁紙出現,但是coverfow丟失了。

missing coverflow in layout

我想要把它的XML佈局內的原因是因爲需要把頁面底部的按鈕。所以我決定在coverflow下面的屏幕下方用按鈕創建一個xml佈局。

什麼是錯的,或者我錯過了什麼讓覆蓋流不能在xml佈局中工作?

在我的代碼中可能存在某些東西可能會導致這種情況發生。我做了以下事情來嘗試並使其發揮作用。代碼作者使它看起來像你所要做的就是使用包含的示例代碼來設置內容視圖。並在佈局中創建一個簡單的XML文件,它應該工作。

我不明白爲什麼coverflow本身工作得很好,並且放置在佈局內時不起作用。

有沒有一個需要做的事情的檢查清單,這樣的工作?

筆者對於CoverFlow的代碼添加兩個註釋掉線當你讓你自己cusom XML視圖

  //Use this if you want to use XML layout file 
    //setContentView(R.layout.main); 
    //coverFlow = (CoverFlow) findViewById(R.id.coverflow); 

我刪除註釋出這些行,所以我可以使用,可以使用的樣本他們。

下一個我下面的代碼添加到XML佈局

 <com.vagina.destruction.CoverFlow 
     android:id="@+id/coverflow" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
     </com.vagina.destruction.CoverFlow> 

這是錯誤消息我是從可視化佈局編輯在eclipse

以下類不能被實例化得到: - com.vagina.destructon.CoverFlow(Open Class,顯示錯誤日誌) - com.vagina.destruction.CoverFlowExample(Open Class,Show Error Log) 有關更多詳細信息,請參見錯誤日誌(窗口>顯示視圖)。 提示:使用View.isInEditMode()在您的自定義視圖跳躍代碼在Eclipse

所示

和這裏的時候是代碼的在CoverFlow的例子活動

public class CoverFlowExample extends Activity implements OnItemClickListener { 
/** Called when the activity is first created. */ 

int imageCount = 0; 
Cursor cur; 
String toastResult; 
String pathName; 
ArrayList<String> list1 = new ArrayList<String>(); 
private int blocker = 0; 
private int imagePosition; 
private int pathIndex; 
private int indexer; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    CoverFlow coverFlow; 
    coverFlow = new CoverFlow(this); 

    Bundle extras = getIntent().getExtras(); 
    if(extras !=null) { 

    imagePosition = extras.getInt("imagePosition"); 

    } 


    String[] proj2 = {MediaStore.Images.Media.DATA}; 
    Cursor cur2 = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj2, MediaStore.Images.Media.IS_PRIVATE + "='" + 1 +"'", null, null); 

    imageCount = cur2.getCount(); 


    cur2.close(); 

    coverFlow.setAdapter(new ImageAdapter(this)); 

    ImageAdapter coverImageAdapter = new ImageAdapter(this); 

    coverFlow.setAdapter(coverImageAdapter); 

    coverFlow.setSpacing(-10); 
    coverFlow.setSelection(imageCount, true); 

// setContentView(coverFlow); 

    coverFlow.setOnItemClickListener(this); 

    coverFlow.setSelection(imagePosition); 


    coverFlow = (CoverFlow) findViewById(R.id.coverflow); 

    //Use this if you want to use XML layout file 
     setContentView(R.layout.activity_coverflow); 
    coverFlow = (CoverFlow) findViewById(R.id.coverflow); 

    // centers the image on coverflow to the same image selected in the previous activity 
     coverFlow.setBackgroundResource(R.drawable.blanklarge); 

回答

3

使用此

的開始部分
 public class CoverFlowExample extends Activity implements OnItemClickListener { 
    /** Called when the activity is first created. */ 

    int imageCount = 0; 
    Cursor cur; 
    String toastResult; 
    String pathName; 
    ArrayList<String> list1 = new ArrayList<String>(); 
    private int blocker = 0; 
    private int imagePosition; 
    private int pathIndex; 
    private int indexer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //Use this if you want to use XML layout file 
     setContentView(R.layout.activity_coverflow); 
     CoverFlow coverFlow; 
     coverFlow = (CoverFlow) findViewById(R.id.coverflow); 

/*  CoverFlow coverFlow; 
     coverFlow = new CoverFlow(this); */ 

     Bundle extras = getIntent().getExtras(); 
     if(extras !=null) { 

     imagePosition = extras.getInt("imagePosition"); 

     } 


     String[] proj2 = {MediaStore.Images.Media.DATA}; 
     Cursor cur2 = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj2, MediaStore.Images.Media.IS_PRIVATE + "='" + 1 +"'", null, null); 

     imageCount = cur2.getCount(); 


     cur2.close(); 

     coverFlow.setAdapter(new ImageAdapter(this)); 

     ImageAdapter coverImageAdapter = new ImageAdapter(this); 

     coverFlow.setAdapter(coverImageAdapter); 

     coverFlow.setSpacing(-10); 
     coverFlow.setSelection(imageCount, true); 

     coverFlow.setOnItemClickListener(this); 

     coverFlow.setSelection(imagePosition); 



     // centers the image on coverflow to the same image selected in the previous activity 
      coverFlow.setBackgroundResource(R.drawable.blanklarge); 

基本上問題是,一旦你在xml中聲明瞭這些東西,一旦你使用setCOntentView給它們充氣,opbjects就會自動創建。您可以使用findViewById獲取已創建的對象,而無需使用「x = new x()」重新創建它們。「

+0

YES !!!!!!它現在的作品 – Kevik

+0

Gr88 :-) ..您也可以註冊,以便遇到問題的其他人可能會覺得這很有幫助。 –