2

ウェブサイトからのカバーフローにいくつかのコードを使用していますが、

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

通常の動作カバーフロー

このカバーフローはうまく機能し、問題はありません。ただし、xmlレイアウト内に配置しようとすると表示されず、coverflowの黒い背景の壁紙のみが表示されましたが、coverfowがありません。

レイアウトにカバーフローがありません

xmlレイアウト内に配置したかったのは、ページの下部にボタンを配置する必要があるためです。そこで、画面下部のカバーフローの下にボタンを配置したxmlレイアウトを作成することにしました。

何が間違っているのか、または何が欠けているので、xmlレイアウト内でカバーフローが機能しませんか?

これが機能するために、コードに欠けているものがある可能性があります。これを機能させるために、次のことを行いました。コード作成者は、含まれているサンプルコードを使用してコンテンツビューを設定するだけでよいように見せます。レイアウトで単純なxmlファイルを作成すると、機能するはずです。

カバーフローがそれ自体でうまく機能し、レイアウト内に配置されたときに機能しない理由がわかりません。

このようなものが機能するために実行する必要があることのチェックリストはありますか?

カバーフローコードの作成者は、独自のcusom xmlビューを作成するときに使用できるサンプルとして、コメント化された2行を追加しました。

         //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(クラスを開く、エラーログを表示)-com.vagina.destruction.CoverFlowExample(クラスを開く、エラーログを表示)エラーログを参照(ウィンドウ>ビューを表示)詳細については。ヒント:Eclipseに表示されたときにコードをスキップするには、カスタムビューでView.isInEditMode()を使用します

これが、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);
4

1 に答える 1

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を使用してそれらを膨らませると、オブジェクトが自動的に作成されることです。findViewByIdを使用して既に作成されたオブジェクトを取得でき、「x = newx()」を使用して再度作成する必要はありません。

于 2012-12-04T04:16:18.747 に答える