2017-02-05 11 views
0

У меня есть 3 действия - активность входа, активность на главной странице, активность профиля. Активность входа вызовет активность главной страницы, а активность главной страницы вызовет активность профиля. Как передать данные из активности входа в активность профиля? Должен ли он сначала передавать данные из активности входа на главную страницу, а затем переходить к активности профиля из активности главной страницы? Или есть ли другой способ передачи данных? Благодаря!Активность активности Android Studio

+0

Либо вы используете 'SharedPreference', либо укажите значение объявления, которое вы хотите передать как' Static' для глобального использования. – W4R10CK

ответ

1

Вы можете сделать это ... или вы могли бы хранить данные в постоянном хранилище и считывать данные по мере необходимости.


Узнайте о SharedPreferences здесь - Saving Key-Value Sets | SharedPreferences

  • Сохранение данных выглядит следующим образом: выглядит

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt(getString(R.string.saved_high_score), newHighScore); 
    editor.commit(); 
    
  • Извлечение данных как:

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
    int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 
    long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue); 
    

Узнайте о SQLite Database здесь - Saving Data in SQL Databases | SQLite Database

  • Сохранение данных выглядит следующим образом: выглядит

    // Gets the data repository in write mode 
    SQLiteDatabase db = mDbHelper.getWritableDatabase(); 
    
    // Create a new map of values, where column names are the keys 
    ContentValues values = new ContentValues(); 
    values.put(FeedEntry.COLUMN_NAME_TITLE, title); 
    values.put(FeedEntry.COLUMN_NAME_SUBTITLE, subtitle); 
    
    // Insert the new row, returning the primary key value of the new row 
    long newRowId = db.insert(FeedEntry.TABLE_NAME, null, values); 
    
  • Извлечение данных как:

    SQLiteDatabase db = mDbHelper.getReadableDatabase(); 
    
    // Filter results WHERE "title" = 'My Title' 
    String selection = FeedEntry.COLUMN_NAME_TITLE + " = ?"; 
    String[] selectionArgs = { "My Title" }; 
    
    // How you want the results sorted in the resulting Cursor 
    String sortOrder = 
        FeedEntry.COLUMN_NAME_SUBTITLE + " DESC"; 
    
    Cursor cursor = db.query(
        FeedEntry.TABLE_NAME,      // The table to query 
        projection,        // The columns to return 
        selection,        // The columns for the WHERE clause 
        selectionArgs,       // The values for the WHERE clause 
        null,          // don't group the rows 
        null,          // don't filter by row groups 
        sortOrder         // The sort order 
        ); 
    
    List itemIds = new ArrayList<>(); 
    while(cursor.moveToNext()) { 
        long itemId = cursor.getLong(
         cursor.getColumnIndexOrThrow(FeedEntry._ID)); 
        itemIds.add(itemId); 
    } 
    cursor.close(); 
    
+0

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

0

Есть два способа передачи значений между различными видами деятельности в Android:

1. Использование намерения:
Пример:
В Вход деятельности, поместите следующий код внутри OnClickListiner:

Intent intent = new Intent(getApplicationContext(), mainActivity.class); 
intent.putExtra("username", usernameVariable); 
intent.putExtra("password", passwordVariable); 
startActivity(intent); 

Затем, на mainActivity, для получения значений используйте следующий код:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view); 

    Intent intent = getIntent(); 

    String u = intent.getStringExtra("username"); 
    String p = intent.getStringExtra("password"); 
    // note: the arguments should match the same as its in the loginActivity 
} 

2. Использование статических переменных:
Пример:

На LoginActivity, создать два статических атрибутов. Как следующее:

Public Class LoginActivity{ 
    public static String username; 
    public static String password; 

    protected void onCreate(Bundle savedInstanceState) { 
     ... 
    } 
} 

Тогда в классе mainActivity использовать следующий код, чтобы получить эти значения:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view); 

    String u=LoginActivity.username; 
    String p=LoginActivity.password; 
} 

Надежда это решить вашу проблему ...

+0

Я использую намерение для вызова активности. Активность входа - это моя первая деятельность. Я вызываю основное действие из активности входа, затем я вызываю активность профиля из основного действия. Для метода intend как передать данные из активности входа в активность профиля? –

+0

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

0

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

public final class ProfileDataModel { 

    private static ProfileDataModel instance; 
    private String userName; 
    private String address; 

    private ProfileDataModel() { 
    } 

    /** 
    * Get Instance for Profile 
    * @return 
    */ 
    public static ProfileDataModel getInstance() { 
     if (instance == null){ 
      instance = new ProfileDataModel(); 
     } 
     return instance; 
    } 


    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 
} 


// Use cases 
//Set the data 

ProfileDataModel.getInstance().setAddress("Data from login response"); 
ProfileDataModel.getInstance().setUserName("As per request/response"); 

//Get the data 

String address = ProfileDataModel.getInstance().getAddress(); 
String userName = ProfileDataModel.getInstance().getUserName(); 

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

  • Нет связанных вопросов^_^