2017-02-05 9 views
0

私は3つのアクティビティ - ログインアクティビティ、メインページアクティビティ、プロフィールアクティビティを持っています。ログインアクティビティはメインページアクティビティを呼び出し、メインページアクティビティはプロファイルアクティビティを呼び出します。ログインアクティビティからプロファイルアクティビティにデータを渡すにはどうすればよいですか?ログインアクティビティからメインページアクティビティにデータを渡してから、メインページアクティビティからプロファイルアクティビティに渡す必要がありますか?あるいは、データを渡す他の方法はありますか?ありがとう!Androidスタジオのアクティビティデータを渡す

+0

「SharedPreference」を使用するか、グローバルに使用するために「静的」として渡す宣言値を作成します。 – 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での活動の間で値を渡すための2つの方法があります。

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オン

、2つの静的属性を作成します。

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

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

もう一つの方法があります

+0

私はアクティビティを呼び出すためにインテントを使用しています。ログイン活動が私の最初の活動です。ログインアクティビティからメインアクティビティを呼び出し、メインアクティビティからプロファイルアクティビティを呼び出します。 intendメソッドの場合、ログインアクティビティからプロファイルアクティビティにデータを渡す方法は? –

+0

インテントでは、1つのアクティビティから別のアクティビティに送信する値を添付することができます。 –

0

...それはあなたの問題を解決しホープ:

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

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

その後、mainActivityクラスでこれらの値を取得するには、次のコードを使用します。次のようにシングルトンクラスを作成してその値を保存して使用することができます。

関連する問題