Java 试图将Imageview传递到viewpagerfragment
因此,我试图基于同一个布局文件创建一个包含26种不同布局的viewpager,并试图通过一个捆绑包传递文本和图像。我记下了文本部分,但我不知道如何将图像放入包中Java 试图将Imageview传递到viewpagerfragment,java,android,android-viewpager,bundle,Java,Android,Android Viewpager,Bundle,因此,我试图基于同一个布局文件创建一个包含26种不同布局的viewpager,并试图通过一个捆绑包传递文本和图像。我记下了文本部分,但我不知道如何将图像放入包中 public class ScreenSlidePageFragment extends Fragment { //Resources mResources = getResources(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup co
public class ScreenSlidePageFragment extends Fragment {
//Resources mResources = getResources();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.alphabet, container, false);
TextView tv = (TextView)v.findViewById(R.id.alphabet);
// ImageView iv = (ImageView)v.findViewById(R.id.letter);
//Drawable drawable = mResources.getDrawable(R.drawable.aletter);
//iv.setImageDrawable(drawable);
tv.setText(getArguments().getString("msg"));
return v;
}
public static ScreenSlidePageFragment newInstance(String text, Drawable drawable) {
ScreenSlidePageFragment f = new ScreenSlidePageFragment();
Bundle b = new Bundle();
b.putString("msg", text);
// b.putInt();
f.setArguments(b);
return f;
}
}
您应该在字母表布局中声明ImageView
... some layout container ...
<ImageView android:id="@+id/letter" android:width="wrap_content" android:height="wrap_content" />
... some other layouts...
在newInstance方法中,可以将正确的资源设置为片段参数
public static ScreenSlidePageFragment newInstance(String text, @DrawableRes int drawable) {
ScreenSlidePageFragment f = new ScreenSlidePageFragment();
Bundle b = new Bundle();
b.putString("msg", text);
b.putInt("letter", drawable); // this is the image in your drawable folder that you can access with R.drawable.letter_a (if the file is called letter_a.png
f.setArguments(b);
return f;
}
您应该在字母表布局中声明ImageView
... some layout container ...
<ImageView android:id="@+id/letter" android:width="wrap_content" android:height="wrap_content" />
... some other layouts...
在newInstance方法中,可以将正确的资源设置为片段参数
public static ScreenSlidePageFragment newInstance(String text, @DrawableRes int drawable) {
ScreenSlidePageFragment f = new ScreenSlidePageFragment();
Bundle b = new Bundle();
b.putString("msg", text);
b.putInt("letter", drawable); // this is the image in your drawable folder that you can access with R.drawable.letter_a (if the file is called letter_a.png
f.setArguments(b);
return f;
}
当您想添加更多字段时,使用
Parcelable
更灵活
首先,创建您自己的对象,例如Screen.java
,其中包含消息和图片字段(可绘制)
希望这对你有帮助 当您想添加更多字段时,使用
Parcelable
更灵活
首先,创建您自己的对象,例如Screen.java
,其中包含消息和图片字段(可绘制)
希望这对你有帮助 哦,男孩开关…是的,开关可以通过地图改进,但要小心内存泄漏我的方式会导致应用程序运行缓慢或使用的内存超过需要吗?哦,男孩开关…是的,开关可以通过地图改进,但是要小心内存泄漏我使用它的方式是否会导致应用程序运行缓慢或使用的内存过多?因此我计划使用一个图像、图像和一个图像按钮(将删除文本),这样我就可以以相同的方式执行这三个操作,对吗?是的,一般来说,您可以在包中传递各种基本类型和可序列化/可打包类型。但是,如果你有更多的数据通过,也许考虑某种类型的鉴别器,你可以通过,然后做的工作片段。但是,这完全是可选的。我得到这个错误java.lang.NoSuchMethodError:com.bignerdranch.android.learningisfun.ScreenSlidePagerActivity.getDrawable,用于这个代码案例0:return ScreenSlidePageFragment.newInstance(“FirstFragment,Instance 1”,getDrawable(R.drawable.aletter));很抱歉评论太乱了。我在发布和使其看起来井井有条方面做得很糟糕。忽略我之前得到的评论,以便我计划有一个图像、图像和图像按钮(将删除文本)所以,我可以用同样的方式做所有三种方法吗?是的,一般来说,你可以在包中传递各种原始的和可序列化的/可分派的类型。但是如果你有更多的数据要通过,也许考虑某种类型的鉴别器,你可以通过,然后在片段中做这项工作。然而,这完全是可选的。我正在获取这个错误JavaLang.NoSuchMethodError:com.bignerdranch.android.learningisfun.ScreenSlidePageActivity.getDrawable用于此代码案例0:返回ScreenSlidePageFragment.newInstance(“FirstFragment,实例1”,getDrawable(R.drawable.aletter));很抱歉,评论太乱了。我不善于发帖,也不善于让它看起来井井有条。忽略我之前收到的评论
public class Screen implements Parcelable {
public String message;
public Drawable picture;
private static final long serialVersionUID = 1L;
public Screen(String message, Drawable picture){
this.message = message;
this.picture = picture;
}
/**
* constructor to rebuild object from the Parcel
* @param source, a parcel data
*/
public Screen(Parcel source) {
this.message = source.readString();
this.picture = new BitmapDrawable(
( (Bitmap) source.readValue(Bitmap.class.getClassLoader()) )
);
}
/**
* describe the kind of special object
*/
@Override
public int describeContents() {
return hashCode();
}
/**
* write this object in to a Parcel
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(message);
dest.writeValue(((BitmapDrawable)picture).getBitmap());
}
public static final Parcelable.Creator<Screen> CREATOR = new Parcelable.Creator<Screen>() {
public Screen createFromParcel(Parcel source) {
return new Screen(source);
}
public Screen[] newArray(int size) {
return new Screen[size];
}
};
}
public class ScreenSlidePageFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.alphabet, container, false);
TextView tv = (TextView)v.findViewById(R.id.alphabet);
ImageView iv = (ImageView)v.findViewById(R.id.letter);
final Screen screen = getArguments().getParcelable("screen");
iv.setImageDrawable(screen.picture);
tv.setText(screen.message);
return v;
}
public static ScreenSlidePageFragment newInstance(String text, Drawable drawable) {
ScreenSlidePageFragment f = new ScreenSlidePageFragment();
Screen screen = new Screen(text, drawable);
Bundle b = new Bundle();
b.putParcelable("screen", screen);
f.setArguments(b);
return f;
}