Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当使用<;包含XML代码时,单击“不适用于图像”选项;包括>;命令_Java_Android - Fatal编程技术网

Java 当使用<;包含XML代码时,单击“不适用于图像”选项;包括>;命令

Java 当使用<;包含XML代码时,单击“不适用于图像”选项;包括>;命令,java,android,Java,Android,这是一个图像的java代码 package com.example.ananduamenon.kindel3; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class ToReader extends Activity { Im

这是一个图像的java代码

package com.example.ananduamenon.kindel3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class ToReader extends Activity {
    ImageView imageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.book_covers );
        imageView = (ImageView) findViewById( R.id.book_cover51 );
        imageView.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent( ToReader.this, com.example.ananduamenon.kindel3.Reader.class );
                startActivity( intent );
            }
        } );

    }

}
此活动的XML代码为

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/book_cover51"
    android:layout_width="100dp"
    android:layout_height="160dp"
    android:layout_margin="5dp"
    android:contentDescription="@string/todo"
    android:scaleType="fitXY"
    android:src="@drawable/book_cover"
    tools:ignore="RtlHardcoded,RtlSymmetry"
    tools:context=".ToReader"/>

当ToReader代码作为主代码运行时,此代码有效

但是当我把这个XML代码包含在主活动中时,它就不起作用了

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
    android:id="@+id/horizontal_scrolls"
    xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>

</LinearLayout>
</HorizontalScrollView>

单击选项现在不起作用。在使用选项添加XML代码时添加XML代码是否有任何要求。java代码根本不在后台运行。

当您使用include时,基本上是告诉您所包含的布局是一个模板,然后您将拥有它的多个实例。因此,模板不能有id,而应该为其实例使用不同的id,并从运行时代码中引用它们。有更好的方法来实现这一点,但这就是实际代码无法工作的原因:

<include android:id="@+id/myId1"
         layout="@layout/book_covers"/>
<include android:id="@+id/myId2"
         layout="@layout/book_covers"/>

如果您的应用程序需要显示基于大型数据集(或经常更改的数据)的元素滚动列表。 您可以在RecyclerView中水平或垂直显示多个项目

请遵循以下URL:


您只提到了一个id参考。对于布局中的多个视图,这有意义吗

imageView = (ImageView) findViewById( R.id.book_cover51 );
android会混淆您想在哪个视图中使用setOnclickListner。我建议为所有这些保留单独的id

<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/> 

像这样

<include layout="@layout/book_covers" 
  android:id="@+id/book_cover1"/> 

<include layout="@layout/book_covers" 
  android:id="@+id/book_cover2"/> .... 

.... 

得到了答案。include将不包括java文件,只包括XML代码。因此,我在主活动中编写代码,而不是在另一个类中编写代码。然后它成功了


谢谢大家的支持和建议

与其在
HorizontalScrollView
中添加相同的布局,为什么不使用
RecyclerView
?这可能是因为现在你的布局中有多个id为
book\u cover 51
的图像视图(准确地说是9),我对android是新手,我没有想到这一点。这个水平滚动不是主要活动,但我曾多次在主要活动中添加水平视图。请写下您的XML文件名称。您可以粘贴
book_covers.XML layout的整个XML文件吗。我已将id提供给我使用的每个include。但这个问题仍然存在。当然,您需要使用这些ID来检索布局。尝试仅包含2个图像,查找具有2个不同ID的2个视图,设置2个单击侦听器并输出/调试结果。问题在于单击选项不起作用。我也在卡片视图中包含了相同的图像,但遇到了相同的问题。请纠正我,如果我错了,您使用的是两个XML第一个显示所有imageView,第二个显示一个imageView,请显示布局文件的名称Nope。只有一个图像视图。我正在使用它将其添加到我需要的任何地方。包含book_covers.xml的布局文件名是什么?