You probably shouldn't try to add conditionals inside the OnClickListener
, instead the simplest thing to do would be to move your conditional logic to another method for example.
@Override
public void onClick(View view){
goToNextView();
}
private void goToNextView(){
if (title_subjects">subjects[0] == "Soft Computing") {
Intent intent = new Intent(ActivityBookDetails.this, pdfviewactivity.class);
startActivity(intent);
}
// else if {}
// else {}
}
As cricket_007 already suggested there are nicer ways than using if/else if statements. If you plan to add a lot more options maybe consider using an enum or map.
public enum Subjects {
SOFT_COMPUTING("Soft Computing", pdfviewactivity.class),
WEB_ENGINEERING("Web Engineering", pdfweben.class),
NETWORK_MANAGEMENT("Wireless Network", pdfnetwork.class),
WIRELESS_NETWORK("Network Management", pdfwireless.class);
private String name;
private Class clazz;
Subjects(String name, Class clazz){
this.name = name;
this.clazz = clazz;
}
public static Class getClass(String title_subject) {
for(Subjects subject: Subjects.values()) {
if (subject.name.equals(title_subject)) {
return subject.clazz;
}
}
return null;
}
}
private void goToNextView() {
//Alternative to conditionals using Enum
Class theClassToGoTo = Subjects.getClass(title_subjects">subjects[0]);
Intent intent = new Intent(ActivityBookDetails.this, theClassToGoTo);
startActivity(intent);
//Alternative to conditionals using HashMap
Map<String, Class> subject_map = new HashMap<>();
subject_map.put("Soft Computing", pdfviewactivity.class);
subject_map.put("Web Engineering", pdfweben.class);
subject_map.put("Wireless Network"
manpreet
Best Answer
2 years ago
I am working on my major project and I want my button to open different intents based on the string array value obtained. I used if and else if statements inside the OnClickListener of the button but it won't click anymore. Please help me.
This is my XML file:
And this is the Java file for the same activity: