gpt4 book ai didi

java - 我应该如何替换可绘制对象?

转载 作者:行者123 更新时间:2023-11-30 01:53:55 28 4
gpt4 key购买 nike

我有一个显示项目(可绘制+文本)的列表适配器。我在我的代码中添加了一个 RoundImage 类,以将可绘制对象替换为圆形的可绘制对象。代码如下:

@Override
public void onCreate(final Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


// cirlce avatars
ImageView imageView1;
RoundImage roundedImage;

imageView1 = (ImageView)rootView.findViewById(R.id.avatar);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.kamil);
roundedImage = new RoundImage(bm);
imageView1.setImageDrawable(roundedImage);
//end circle avatars

}

接下来,在 onCreateView 中我使用了一个适配器:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

rootView = inflater.inflate(R.layout.fragment_home, container, false);



//button --------------------------
add = (ImageButton) rootView.findViewById(R.id.add_button);
add.setOnClickListener(this);
//button --------------------------

RowBean RowBean_data[] = new RowBean[]{
new RowBean(R.drawable.kamilk, "Kamil "),
new RowBean(R.drawable.bartlomiej, "Bartlomiej "),
new RowBean(R.drawable.krzysztof, "Krzysztof ")
};
CustomAdapter adapter = new CustomAdapter(getActivity().getApplicationContext(), R.layout.list_style, RowBean_data);
ListView lista = (ListView) rootView.findViewById(R.id.lista);
lista.setAdapter(adapter);


return rootView;

}

但是我遇到了一个错误

java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.materialdesign/info.androidhive.materialdesign.activity.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

所以我的问题是,我应该如何处理显示“roundedImage”的适配器?

我认为问题出在下面这行,我也尝试使用 getActivity().findViewbyId 但它也没有用。

imageView1 = (ImageView)rootView.findViewById(R.id.avatar);

最佳答案

info.androidhive.materialdesign.activity.HomeFragment.onCreate(HomeFragment.java:41)

这一行导致你的应用程序崩溃,我发现这一行包含以下指令

imageView1 = (ImageView)rootView.findViewById(R.id.avatar);

崩溃原因

应用程序正在崩溃,因为您的 rootView 在 onCreate 方法中为空,因为 onCreate() 在 onCreateView() 之前先执行请检查 fragment 的生命周期...!

解决方案

不要在onCreate方法中给出任何指令,使用下面的代码,

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

rootView = inflater.inflate(R.layout.fragment_home, container, false);

// cirlce avatars
ImageView imageView1;
RoundImage roundedImage;

imageView1 = (ImageView)rootView.findViewById(R.id.avatar);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.kamil);
roundedImage = new RoundImage(bm);
imageView1.setImageDrawable(roundedImage);
//end circle avatars


//button --------------------------
add = (ImageButton) rootView.findViewById(R.id.add_button);
add.setOnClickListener(this);
//button --------------------------

RowBean RowBean_data[] = new RowBean[]{
new RowBean(R.drawable.kamilk, "Kamil "),
new RowBean(R.drawable.bartlomiej, "Bartlomiej "),
new RowBean(R.drawable.krzysztof, "Krzysztof ")
};
CustomAdapter adapter = new CustomAdapter(getActivity().getApplicationContext(), R.layout.list_style, RowBean_data);
ListView lista = (ListView) rootView.findViewById(R.id.lista);
lista.setAdapter(adapter);


return rootView;

}

关于java - 我应该如何替换可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32565738/

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