我是android编程的新手。虽然我在Access上搜索了这个问题,但没有找到任何令人满意的解决方案:
问题是:我想动态地将一个图像设置为imageview--它位于一个片段中。
我想使用图像的文件名来完成这个操作。
但我得到了NullPointerException:
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widget.imageView.SetImageResource(int)”
下面是我的代码。如果有人回应我会很高兴。
activity班:
public class Oku extends AppCompatActivity {
private int hedefSayi;
private int actualNumber;
private FragmentManager fragmentManager;
private Fragment tempFragment;
private BottomNavigationView bottomNavigationView;
private FrameLayout fragmentContainer;
private ProgressBar progressBar;
private Button btn_tıkla;
private Vird comingVird;
private Fragment arabicImageFragment;
private Fragment turkishTextFragment;
private Fragment anlamFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_oku);
comingVird= (Vird) getIntent().getSerializableExtra("Vird.class");
hedefSayi=200;
actualNumber=hedefSayi;
fragmentContainer=findViewById(R.id.fragment_container);
bottomNavigationView=findViewById(R.id.bottom_navi);
arabicImageFragment=new Fragment_Arabic_Image(comingVird.getImageName());
//put the arabic image fragment on the container first
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,arabicImageFragment).commit();
//on navigation item selected:
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
//get the selected items id number
int itemID=item.getItemId();
//if id number is related to the arabic image fragment, set the temp fragment as arabic image fragment
if(itemID==R.id.action_oku_arapca){
tempFragment=new Fragment_Arabic_Image(comingVird.getImageName());
}
//if id number is related to turkish text fragment, set the related fragment
else if(itemID==R.id.action_oku_turkce) { tempFragment=new Fragment_Turkce_Okunus();}
//if id number is related to the meaning set related fragment..
else if(itemID==R.id.action_oku_anlamı){ tempFragment=new Fragment_Anlam();}
//replace the fragment on the container with the temp fragment
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,tempFragment).commit();
return true;
}
});
//initiate progress bar with full progress
progressBar=findViewById(R.id.progressBar);
progressBar.setProgress(100);
btn_tıkla=findViewById(R.id.button_tıkla);
btn_tıkla.setText(""+actualNumber);
//on button click
btn_tıkla.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressBar.setProgress(100*actualNumber/hedefSayi);
//decrease the number and set on the text of the button
actualNumber--;
btn_tıkla.setText(""+actualNumber);
//her button tıklamada kısa titreşim ver
Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vb.vibrate(100);
}
});
}
}
片段类:
public class Fragment_Arabic_Image extends Fragment {
private String imageName;
private ImageView arabicText_Image;
private int imageid;
public Fragment_Arabic_Image(String imageName) {
this.imageName = imageName;
}
@SuppressLint("ResourceType")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_arabic_image,container,false);
imageid=getActivity().getResources().getIdentifier(imageName,"drawable",getActivity().getPackageName());
arabicText_Image=view.findViewById(R.id.img_arabic_text);
arabicText_Image.setImageResource(this.imageid);//this line causes error
return view;
}
}
错误消息:
2020-08-04 14:11:18.822 121 01-12101/com.codeforlite.virdlerim E/AndroidRuntime:致命异常:主
进程:com.codeforlite.virdlerim,PID:12101
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widget.imageView.SetImageResource(int)”
在com.codeforlite.virdlerim.fragment_arabic_image.onCreateView(Fragment_arabic_image.:46)
在AndroidX.fragment.app.fragment.performCreateView(Fragment.Java:2600)
在AndroidX.fragment.app.fragmentManagerimpl.moveToState(FragmentManagerimpl.Java:881)
在AndroidX.fragment.app.fragmentManagerimpl.moveToExpectedState(spatchStateChange(FragmentManagerImpl.java:2663)
在AndroidX.Fragment.app.FragmentManagerImpl.java:2613)
在AndroidX.Fragment.app.FragmentController.DispatchActivityCreated(FragmentController.DispatchActivityCreated(FragmentController.java:246)
在AndroidX.Fragment.app.FragmentActivity.OnStart(FragmentActivity.java:542)
在ransactionexecutor.execute(Transactionexecutor.java:97)
在android.app.activitythread$H.HandleMessage(activitythread.java:2220)
在android.os.handler.dispatchmessage(handler.java:107)
在android.os.looper.loop(looper.java:237)
在android.app.activitythread.main(activitythread.java:8016)
在
ImageViewarabictext_image
似乎没有正确初始化。检查fragment_arabic_image.xml
。确保ImageView具有值为“img_arabic_text”的id属性
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img_arabic_text" />
问题内容: 我基本上有一个具有多个选项卡的MainActivity。每个选项卡都是一个ShowListFragment,它扩展了Fragment。现在,每个选项卡都包含我从数据库中获取的数据。我有一个MOVE按钮,可将数据从每个片段的一个选项卡移动到另一个选项卡: 片段不会直接更新,而是在选项卡之间滑动了几下(恰好3次)。单击按钮后如何强制片段立即更新?我不想通过ViewPager中的onPage
我有一个活动,将使用下面的方法动态添加片段。 FragmentA有一个文本视图。我的活动中有一个导航抽屉,我想根据在导航抽屉中单击的项目在片段(例如FragmentA、FragmentB和FragmentC)之间切换。当更改为另一个片段时,如何保存片段的状态。我已经实现了onSavedInstance(Bundle outState)和onActivityCreated(Bundle savedI
上一篇尝试了变换颜色,这一篇来尝试一下动态图片,前面的两步都一致,这里直接说回调吧, 绘制时间 首先要确定在哪里添加回调, viewer.entities.add({ name: 'Rotating rectangle with rotating texture coordinate', rectangle: { coordinates: Cesium.Rectan
本文向大家介绍Android ImageView随手势变化动态缩放图片,包括了Android ImageView随手势变化动态缩放图片的使用技巧和注意事项,需要的朋友参考一下 在Android实际项目开发中,经常要用到ImageView这个组件,如果纯粹只是用来显示某一张图片,这个原生的组件是很方便的。但有时候为了效果更炫一点,比如很多软件都有的对图片的处理,随着手势的变化来拉大或缩小图片,这时就
本文向大家介绍C#动态生成PictureBox并指定图片的方法,包括了C#动态生成PictureBox并指定图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#动态生成PictureBox并指定图片的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。
问题内容: 我正在从数据库中成功获取数据值。我也将它们存储到一个数组中。我需要将String数组作为项的加载,以响应执行的关键操作。每当获取按键值时,如何获取按键值,就如何重新加载项目。相反,我需要动态刷新项目。 问题答案: