2014-03-25 65 views
-2

我的應用程序有2個活動。如何在Android中將數據從一個活動發送到另一個活動?

  1. 第一活動只是一個簡單的形式,其中用戶輸入課程信息(類名稱,professor..etc。)的第一個活動經過這是應該被存儲在一個列表中的數據。

  2. 在第二個活動中。問題是,只有第一個課程存儲在列表中,在第一次沒有新增加到第二個活動之後。

我該怎麼做?

+0

你如何發佈一些相關的代碼?向我們展示你到目前爲止所嘗試的。 –

+0

請發佈您的代碼,以幫助很多給你一個合適的答謝謝:) –

+0

這裏是一個很好的例子,如何切換活動之間發送數據:http://www.android-ios-tutorials.com/ 117/how-to-between-different-activities-in-android/ – Houcine

回答

4
Intent i = new Intent(this, ActivityTwo.class);//this your current class 
startActivity(i); 
to pass a value in class 1 

Intent i = new Intent(this, ActivityTwo.class); 
i.putExtra("Value1", "This value one for ActivityTwo "); 
i.putExtra("Value2", "This value two ActivityTwo"); 
to get values .from ActivityTwo.class 

Bundle extras = getIntent().getExtras(); 
if (extras == null) { 
    return; 
} 
// get data via the key 
String value1 = extras.getString(Intent.EXTRA_TEXT); 
if (value1 != null) { 
    // do something with the data 
} 
+0

謝謝Chetak Bhimani – user3458541

5

在您的第一項活動:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
          intent.putExtra("login", jObj.getString(KEY_LOGIN)); 
          intent.putExtra("mdp", jObj.getString(KEY_MDP)); 
          intent.putExtra("prenom", jObj.getString(KEY_PRENOM)); 
          intent.putExtra("nom", jObj.getString(KEY_NOM)); 
          intent.putExtra("mail", jObj.getString(KEY_MAIL)); 
          intent.putExtra("tel", jObj.getString(KEY_TEL)); 
          startActivity(intent); 

在你的第二個活動:

Intent intent = getIntent(); 

      if (intent != null) { 
       login = intent.getStringExtra("login"); 
       mdp = intent.getStringExtra("mdp"); 

       items.add(intent.getStringExtra("login")); 
       items.add(intent.getStringExtra("prenom")); 
       items.add(intent.getStringExtra("nom")); 
       items.add(intent.getStringExtra("mail")); 
       items.add(intent.getStringExtra("tel")); 
      } 
1

一般來說,你可以從一個Activity傳遞到另一個數據與Intent這樣的:

在您的第一個活動中:

// Create your Intent 
Intent intent = new Intent(context, TargetActivity.class); 

// Now you can add extras to the intent, you identify extras with a String key 
intent.putExtra("text", someString); 
intent.putExtra("amount", someInteger); 

// Then you start your Activity with this Intent 
startActivity(intent); 

在你的第二個活動:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Only get data from Intent when the Activity is new 
    if(savedInstanceState == null) { 
     Intent intent = getIntent(); 

     // Now you read the values from the Intent 
     String someString = intent.getStringExtra("text"); 

     int someInteger = intent.getIntExtra("amount", 0); 
    } 
} 
1

哎其簡單的看一下代碼

發送

Intent i = new Intent(getApplicationContext(), Confirmation.class) 
i.putExtra("name",etName.getText().toString())); 
i.putExtra("pass",etPass.getText().toString()); 
startActivity(i); 

在接下來的活動recieving

Bundle extras = getIntent().getExtras(); 
        String strEmployeeID=""; 
        if (extras != null) 
        { 

         String value = extras.getString("name"); 
           String value1 = extras.getString("pass"); 
    //     
Toast.makeText(getBaseContext(), value, Toast.LENGTH_LONG).show(); 
         strEmployeeID = value; 
           strEmployeePass = value1; 
        } 
0
,如果你想兩項活動。你之間發送數據必須調用以下一個

startActivityForResult(getcontext(), SecondActivity.class); 

在調用此,活動開始second.In轉,第二次針對這一意圖,並在回信中必要的數據。

public void startActivityForResult(Intent intent, int requestCode, Bundle options) { 
     if (mParent == null) { 
      Instrumentation.ActivityResult ar = 
       mInstrumentation.execStartActivity(
        this, mMainThread.getApplicationThread(), mToken, this, 
        intent, requestCode, options); 
      if (ar != null) { 
       mMainThread.sendActivityResult(
        mToken, mEmbeddedID, requestCode, ar.getResultCode(), 
        ar.getResultData()); 
      } 
      if (requestCode >= 0) { 

       mStartedActivity = true; 
      } 
     } else { 
      if (options != null) { 
       mParent.startActivityFromChild(this, intent, requestCode, options); 
      } else { 
       // Note we want to go through this method for compatibility with 
       // existing applications that may have overridden it. 
       mParent.startActivityFromChild(this, intent, requestCode); 
      } 
     } 
    } 

下面一個則必須調用此的第一個活動(從那裏叫的意圖)。它有助於從第二活動臨危應答數據。

public void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if(!isFeatureInstalled(getContext())) 
      return; 

     if(requestCode == GET_REMINDER_DETAILS && resultCode == Activity.RESULT_OK) 
     { 
      mFilled = true; 
      fillDataFromIntent(data); 
      checkALertRequired.setChecked(true); 
     } 
    } 
0

只是單純地那樣做:從第一次活動,第二屆活動

傳遞數據:

Intent intent = new Intent(yourafirstctivity.this,Yoursecondactivity.class); 
     intent.putExtra("yourkey", yourvalue); 
     intent.putExtra("yourkey", yourvalue); 
     intent.putExtra("yourkey", yourvalue); 
     startActivity(intent); 

,並從第一次活動的數據得到第二個活動:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.yourlayout); 


String yourstring = getIntent().getExtras().getString("yourkey"); 
String yourstring = getIntent().getExtras().getString("yourkey"); 
String yourstring = getIntent().getExtras().getString("yourkey"); 

} 
相關問題