#java #android #xml #eclipse #android-listview
#java #Android #xml #eclipse #android-listview
Вопрос:
Я создаю приложение для Android, и это в основном приложение для гидов. У меня есть это, где пользователь может щелкнуть название города на главной странице, и ему будет показан список для этого города. Оттуда они могут получить любую необходимую информацию. Ниже приведен список Java-кода.
public class Alantic extends ListActivity{
String classes[] = { "City history", "Fort Macon", "example2", "example3", "example4", "example5", "example6"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Alantic.this, android.R.layout.simple_list_item_1, classes));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String abc = classes[position];
try{
Class ourClass = Class.forName("com.techreviewsandhelp.carteretcountyhistoryguide." abc);
Intent ourIntent = new Intent("Alantic.this, ourClass");
startActivity(ourIntent);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
}
Проблема, с которой я сталкиваюсь, — это имена строк. Очевидно, что любой может увидеть что-то вроде «Истории города» и знать, что он получит. Но вы не можете вставлять пробелы в имена XML и не можете повторно использовать имя. Я пытаюсь выяснить, как сохранить его там, где пользователь может видеть что-то вроде истории города, но программное обеспечение изменяет это на то, что необходимо в серверной части.
Возможно ли это. Если да, то как?
Комментарии:
1. Есть ли способ выполнить какое-либо выражение if? Например, если строка «История города» изменится на «beachcity», если «Форт Макон» изменится на «fortmacon»
Ответ №1:
Вы можете попробовать что-то вроде этого:
public class Testing {
public static void main(String[] args) {
String classes[] = { "City history", "example1", "example2",
"example3", "example4", "example5", "example6" };
String abc = classes[0].replaceAll(" ", "");
System.out.println(abc);
}
}
В случае истории города просто назовите класс CityHistory.java .
Комментарии:
1. Когда я добавил это, я получил сообщение об ошибке, за которым последовала другая. Первая ошибка была «Метод replaceAll(string,String) в типе String неприменим для аргументов (String)» это в основном добавляет abc в («»,»»). Когда он вводит abc, новая ошибка гласит: «Возможно, локальная переменная abc не была инициализирована».
2. @user280655 Я попробовал, мой предыдущий код работает так, как ожидалось. Чтобы убедиться, что я попробовал это снова, и это снова было успешным. Пожалуйста, проверьте свой код и устраните ошибки.
3. @user280655 Первое сообщение об ошибке выглядит так, будто вы помещаете один параметр в
replaceAll
вызов внутри круглых скобок вместо двух. Код в ответе показывает две строки внутри круглых скобок. Вы уверены, что ввели его правильно?4. Да, я не знал, что мне нужно сохранить оба. Итак, в принципе, мне нужно добавить («»,»») для каждой строки. Например, («История города», «beachcity»)(«example1», «bla»)
5. Это не работает. Я получаю вызов конструктора, который должен быть первым оператором в конструкторе. Это связано с выполнением следующих действий («История города», «beachcity»), («Fort Macon», «fortmacon»);