gpt4 book ai didi

android - 在 Fragment 上显示来自 url 的图像

转载 作者:行者123 更新时间:2023-11-29 17:54:08 25 4
gpt4 key购买 nike

我在互联网上四处寻找,但找不到答案,因为我不断从他们那里得到错误。我正在尝试从 url 制作图片以显示在 ImageView 中,有什么帮助吗?非常感谢你:D

这是我的 fragment 代码

package com.TripleC.twenty20;

import com.TripleC.twenty20.R;
import com.TripleC.twenty20.R.layout;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class PagesFragment extends Fragment {

public PagesFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_pages, container, false);
return rootView;


}
}

我试试这个

try {
ImageView i = (ImageView)findViewById(R.id.image);
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
i.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

但它告诉我我不能使用 findviewbyid “The method findViewById(int) is undefined for the type PagesFragment”

这是我单击 fragment Logcat 时出现的新错误:

12-27 03:13:32.138: E/AndroidRuntime(1989): FATAL EXCEPTION: main
12-27 03:13:32.138: E/AndroidRuntime(1989): android.os.NetworkOnMainThreadException
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.net.InetAddress.getAllByName(InetAddress.java:214)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
12-27 03:13:32.138: E/AndroidRuntime(1989): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.net.URLConnection.getContent(URLConnection.java:190)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.net.URL.getContent(URL.java:447)
12-27 03:13:32.138: E/AndroidRuntime(1989): at com.TripleC.twenty20.PhotosFragment.onCreateView(PhotosFragment.java:30)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.app.BackStackRecord.run(BackStackRecord.java:635)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.os.Handler.handleCallback(Handler.java:615)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.os.Handler.dispatchMessage(Handler.java:92)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.os.Looper.loop(Looper.java:137)
12-27 03:13:32.138: E/AndroidRuntime(1989): at android.app.ActivityThread.main(ActivityThread.java:4918)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.lang.reflect.Method.invokeNative(Native Method)
12-27 03:13:32.138: E/AndroidRuntime(1989): at java.lang.reflect.Method.invoke(Method.java:511)
12-27 03:13:32.138: E/AndroidRuntime(1989): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
12-27 03:13:32.138: E/AndroidRuntime(1989): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
12-27 03:13:32.138: E/AndroidRuntime(1989): at dalvik.system.NativeStart.main(Native Method)

最佳答案

如果您访问 fragment 中的 View ,那么您需要以 view.findViewById 的形式访问它,就像我在下面所做的那样:

尝试如下:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_pages, container, false);

try {
ImageView i = (ImageView)rootView.findViewById(R.id.image);
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
i.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return rootView;


}

关于android - 在 Fragment 上显示来自 url 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com