2016-03-05 2 views
-2

Я пробовал создать новый экземпляр Activity, но это не кажется правильным и кажется, что это наносит больше вреда, чем пользы, - и также не работает, так что да. При этом у меня есть метод для заполнения ListView в одном действии с помощью кнопки, которая должна добавить что-то в этот список на другой. Я пытаюсь выяснить, как я могу вызвать метод из другой Activity. Я попытался применить static, но некоторые из кода в методах говорят, что на него нельзя ссылаться из статического контекста.Как я могу вызвать метод для другого действия?

Вот код, который я пытаюсь вызвать из другого метода:

CharacterDatabaseAdapter charDB; 



public void populateListView() { 
     Cursor cursor = charDB.getAllRows(); 

    String[] fromFieldNames = new String[] {CharacterDatabaseAdapter.CHARACTER_NAME, 
      CharacterDatabaseAdapter.CHARACTER_CLASS, 
      CharacterDatabaseAdapter.CHARACTER_LEVEL}; 
    int[] toViewIDs = new int[] {R.id.row_name, R.id.row_class, R.id.row_lvl}; 
    SimpleCursorAdapter cursorAdapter; 
    cursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.character_overview_list_display, cursor, fromFieldNames, toViewIDs, 0); 

    ListView charList = (ListView) findViewById(R.id.charListView); 
    charList.setAdapter(cursorAdapter); 
} 
+0

Вам нужно больше узнать о жизненном цикле деятельности и деятельности. Активность, которая не видна, недоступна. Просто как тот. Если вы хотите добавить данные в список, который будет отображаться в другом действии, вам необходимо сохранить эти данные * отдельно * от действий и использовать эту активность, чтобы просто делать то, что они предназначены для: отображения данных. – 323go

+0

Я не уверен, что то, что я делаю, это именно то, что вы имеете в виду, но я думаю, что я это делаю. У меня есть отдельный класс с именем CharacterDatabaseAdapter, который делает тяжелый подъем - настраивает базу данных и делает все необходимое для ее поддержания. Следовательно, почему я использую CharacterDatabaseAdapter в верхней части ссылочного кода. – Vigilant

+0

Если вы это делаете, то ваш вопрос не нужно спрашивать. – 323go

ответ

1

Вы не можете полагаться на другой вид деятельности, поскольку деятельность держать их свой жизненный цикл, а другой может быть не жив по какой-либо причине в время, которое вы пытаетесь назвать. Итак, вам нужно знать о намерениях, так как действия (и другие объекты Android) обмениваются друг с другом.

Вы можете отправлять данные из одного вида деятельности другому, используя намерения и в новом действии, обработанном полученными данными.

Here У вас есть очень полный пример использования намерений.