许多具有相同内容的活动(广告,奖励广告,功能...)如何避免重复代码?

时间:2019-07-04 08:12:49

标签: android

我有一个画廊应用程序,其中包含一些类别:动物,花卉...我创建了一个活动的每个画廊,所有画廊中的此活动具有相同的内容:

onCreate:
 tSpeak = new TextToSpeech(this, new TextToSpeech.OnInitListener() { ...

 AdView adView = new AdView(MainActivity.this); ...

//some checks to change images:

if(fase == 1) { imageView1.setImageResource(R.drawable.flower1); ...
if(fase == 100) ...

some setOnClickListener

after that some onRewardedVideo functions, a next() function that will intent to the same activity to show next image on this gallery (`fase` + 1)

我想知道的是,我是否要重复所有这些事情(TextToSpeech,侦听器,有偿视频功能,adview功能),而只更改每个活动库中的if检查? strong>这是每个活动库中唯一会改变的事情,我不想对所有类别仅使用一个活动,因为在这种情况下,我可能拥有超过2000个ifs,并且这样做不利于工作。

我只想在每个类别中插入ifs即可在此处设置图像资源,而无需一次又一次地复制所有活动。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以在BaseActivity中创建常用功能,并从BaseActivity扩展您的活动。

对于ifs条件检查,您可以在BaseActivity中有一个布尔字段,您可以在每个子类中覆盖该布尔字段(在这种情况下,是您的实际活动)。

一个更好的选择是仅在Bundle中传递您的类别时才进行一项活动。现在,根据您的类别,您可以switch覆盖值并保留您的变化。

答案 1 :(得分:2)

我建议您使用一个活动,并通过Intent Extra将图库ID作为参数传递给活动。

您可以从活动中的静态地图中获取当前画廊的图像资源ID。

您还可以使用每个片段只有一个图库的ViewPager,以使您的用户可以快速浏览各个图库。

查看此以获得更多信息: https://developer.android.com/training/animation/screen-slide