Как изменить имя класса string в середине кода?

#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»);