【发布时间】:2022-01-04 10:28:10
【问题描述】:
我想减小函数的大小,从而避免重复。 通过构建一个同时包含我所有命令的函数。 “if”函数存在于三种不同的配置中,是否可以调整所有内容以便能够编写一次? 我们可以对“其他”功能做同样的事情吗? 如果您有什么建议,请不要犹豫,我是 Java 新手,所以我的水平还不够高。
if (text.substring(15, 18).contains("A"))
{
R2.setBackgroundResource(R.drawable.picto_rouge);
}
else {
R2.setBackgroundResource(R.drawable.picto_vert);
}
R2.setOnClickListener(a -> {
setContentView(R.layout.activity_autodiagnostic_repartiteur);
{
Repartiteur = findViewById(R.id.Repartiteur);
Repartiteur.setBackgroundResource(R.drawable.repartiteur2);
BottomNavigationView bandeauNavigationView = findViewById(R.id.bandeau_navigation);
bandeauNavigationView.setSelectedItemId(R.id.accueil);
bandeauNavigationView.setOnNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.accueil:
return true;
case R.id.commerce:
startActivity(new Intent(getApplicationContext(), PageCommercial.class));
overridePendingTransition(0, 0);
return true;
case R.id.services:
startActivity(new Intent(getApplicationContext(), Support.class));
overridePendingTransition(0, 0);
return true;
case R.id.info:
startActivity(new Intent(getApplicationContext(), Info.class));
overridePendingTransition(0, 0);
return true;
}
return false;
});
}
});
if (text.substring(19, 22).contains("A"))
{
R3.setBackgroundResource(R.drawable.picto_rouge);
}
else {
R3.setBackgroundResource(R.drawable.picto_vert);
}
R3.setOnClickListener(a -> {
setContentView(R.layout.activity_autodiagnostic_repartiteur);
{
Repartiteur = findViewById(R.id.Repartiteur);
Repartiteur.setBackgroundResource(R.drawable.repartiteur3);
BottomNavigationView bandeauNavigationView = findViewById(R.id.bandeau_navigation);
bandeauNavigationView.setSelectedItemId(R.id.accueil);
bandeauNavigationView.setOnNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.accueil:
return true;
case R.id.commerce:
startActivity(new Intent(getApplicationContext(), PageCommercial.class));
overridePendingTransition(0, 0);
return true;
case R.id.services:
startActivity(new Intent(getApplicationContext(), Support.class));
overridePendingTransition(0, 0);
return true;
case R.id.info:
startActivity(new Intent(getApplicationContext(), Info.class));
overridePendingTransition(0, 0);
return true;
}
return false;
});
}
});
if (text.substring(23, 26).contains("A"))
{
R4.setBackgroundResource(R.drawable.picto_rouge);
}
else {
R4.setBackgroundResource(R.drawable.picto_vert);
}
R4.setOnClickListener(a -> {
setContentView(R.layout.activity_autodiagnostic_repartiteur);
{
Repartiteur = findViewById(R.id.Repartiteur);
Repartiteur.setBackgroundResource(R.drawable.repartiteur4);
BottomNavigationView bandeauNavigationView = findViewById(R.id.bandeau_navigation);
bandeauNavigationView.setSelectedItemId(R.id.accueil);
bandeauNavigationView.setOnNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.accueil:
return true;
case R.id.commerce:
startActivity(new Intent(getApplicationContext(), PageCommercial.class));
overridePendingTransition(0, 0);
return true;
case R.id.services:
startActivity(new Intent(getApplicationContext(), Support.class));
overridePendingTransition(0, 0);
return true;
case R.id.info:
startActivity(new Intent(getApplicationContext(), Info.class));
overridePendingTransition(0, 0);
return true;
}
return false;
});
}
});
【问题讨论】:
-
在类中实现 setonclicklistener 并在 onClick() 方法中添加一个基于 view-id 的 switchcase,这将是一种更简洁的代码
-
你能给我举个例子吗?
标签: java android-studio if-statement switch-statement