2015-05-22 9 views
0

У меня есть поле входа, и я хочу получить эти данные и поместить в textView другую активность, но есть одно действие между этими двумя.получить данные EditText в другом действии - android

Следуйте то, что я до сих пор: MainActivity

Intent i = new Intent(MainActivity.this, FirstPage.class); 
       i.putExtra("username", loginField.getText().toString()); 

Третья активность: TextView textConta = (TextView) findViewById (R.id.textConta);

textConta.setText("*" + getIntent().getExtras().getString("username")); 

и textView пуст. Любая подсказка? Thanks

+0

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

+0

@ DanielNugent Im делает это в середине. Активность «Intent i = getIntent(); i.getStringExtra («имя пользователя»); ' –

+0

Sharedpreferences или глобальная переменная. sp - путь. – Dhina

ответ

0

В деятельности, где вы входа на поле:

SharedPreferences login = getSharedPreferences("LOGIN", 0); 
SharedPreferences.Editor editor = login.edit(); 
editor.putString("user", loginField.getText().toString()); 
editor.commit(); 

В деятельности, где вы хотите отобразить:

SharedPreferences login = getSharedPreferences("LOGIN", 0); 
String user = login.getString("user", "0"); 
textview.setText(user); 
+0

Пробовал, но я думаю, это не сработало. –

+0

Что не сработало. вы можете быть точным, что происходит hapening – Dhina

+0

Это была еще одна проблема, я начал третью деятельность, используя setContent not startActivity (Intent). Теперь его работа. Благодарю. Как проголосовать? У меня еще нет 15 rep –

1

Вам необходимо передать свои намерения с 2-го по Activity на 3-й.

Или как альтернативное решение вы можете хранить данные, которые вы хотите передать между действиями в File, SharedPreferences, SQLiteDatabase или другое хранилище.

0

Вы можете использовать SharedPreferences очень легко. Сохраните строку в первой деятельности:

SharedPreferences settings = getSharedPreferences("AppName", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("username", loginField.getText().toString()); 
editor.apply(); 

Затем получить строку в любой деятельности, после того, что:

SharedPreferences settings = getSharedPreferences("AppName", Context.MODE_PRIVATE); 
settings.getString("username", ""); 
0

также вы можете использовать статическую переменную в классе контента следующим образом:

public class User{ 
static string username = "xxxx"; 
} 

вы можете получить имя пользователя при любой деятельности, которую хотите. Поскольку это только одна переменная, я не предлагаю использовать SharedPreferences.

другой способ использует «приложение»

public class User extends application{ 
private String username= "xxxx"; 

public String getUsername() { 
    return username; 
} 
} 

и в другой деятельности, вы можете получить класс приложений в качестве метода наблюдения:

User user = getApplication(); 
String username = user.getUsername(); 

андроида Буфер обмена является третьим способом, получить сообщение, которое вы хотите ,

0

После того, как деятельность была не в фокусе, все значения, полученные ею, и сама деятельность будут потеряны. Так что мы должны принимать значения во 2-ое действие, а затем в третье действие. Это единственный способ . Мы можем использовать намерения для него, а значения могут храниться в комплекте.

0

Создание простой DataHolder класс

public class DataHolder { 
    public static String SOME_STRING; 
} 

В одной деятельности просто установить DataHolder.SOME_STRING = editText.getText().toString();

В другой доступ к нему

String abcd = DataHolder.SOME_STRING; 

Relly просто не так ли?

Смежные вопросы