2017-05-31 85 views
0

如何從兩個不同的活動(可以說是:A和B)中檢索數據,並且我想在另一個活動(活動C)中顯示。也許我可以這樣畫--A和B包含應該在C中顯示的數據。就像那樣簡單。如何從兩個不同的活動檢索數據並顯示在另一個不同的活動

但問題是,當我從B接收數據(此時我也接收來自B的數據)之後,我從A接收數據。來自A的數據缺失或與「重置」一樣。

活性A:當我接收來自B數據和予

我使用以下代碼取從A數據這個問題也存在這種使用意圖

public static final String EXTRA_COUNTRY_SITE = "EXTRA_COUNTRY_SITE"; 
private static final int REQUEST_RESPONSE_SITE = 1; 

class ItemLists implements AdapterView.OnItemClickListener{ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     TextView tvs = (TextView)view.findViewById(R.id.textViewSiteName); 
    // Lets say textview just like String "Data A" 
     Intent intent = new Intent(view.getContext(), LoginActivityView.class); 
     intent.putExtra(EXTRA_COUNTRY_SITE, tvs.getText().toString()); 
    // tvs.getText().toString() here you can change it to String 
     startActivityForResult(intent, REQUEST_RESPONSE_SITE); 
    } 
} 

活動如何發送的數據B:這是用數據意向

public static final String EXTRA_COUNTRY_EMPLOYEE = "EXTRA_COUNTRY_EMPLOYEE"; 
private static final int REQUEST_RESPONSE_EMPLOYEE = 1; 

class ItemListe implements AdapterView.OnItemClickListener{ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     TextView tve = (TextView)view.findViewById(R.id.textViewEmpName); 
    // Lets say textview just like String "Data B" 
     Intent intent = new Intent(view.getContext(), LoginActivityView.class); 
     intent.putExtra(EXTRA_COUNTRY_EMPLOYEE, tve.getText().toString()); 
    // tvs.getText().toString() here you can change it to String 
     startActivityForResult(intent, REQUEST_RESPONSE_EMPLOYEE); 
    } 
} 

活動C I發送方式:我只是想在的EditText

展示10

//下面這個問題從

String country_emp = getIntent().getStringExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE); 
    EditText editTextEmployee= (EditText) findViewById(R.id.editTextEmployee); 
    editTextEmployee.setText(country_emp); 

    String country_site = getIntent().getStringExtra(ViewSiteActivity.EXTRA_COUNTRY_SITE); 
    EditText editTextSite= (EditText) findViewById(R.id.editTextSite); 
    editTextSite.setText(country_site); 

來了,這是怎麼了,我從活動Ç

public void click(View v) { 
    Intent intent = null; 
    switch(v.getId()) { 
     case R.id.editTextSite: 
      intent = new Intent(this, ViewSiteActivity.class); 
      break; 
     case R.id.editTextEmployee: 
      intent = new Intent(this, ViewEmployeeActivity.class); 
    } 
    startActivity(intent); 
} 

任何想法去活動A和B來解決這個問題或其他技巧來傳遞數據。對不起,我的英語不好,我只是Android的初學者。

+0

使用意圖來傳遞數據是跨活動共享數據的行的方式。你的確切工作流程是什麼?如果你從'A - > B - > C',那麼你需要按照這個順序通過intent傳遞數據。 –

+0

我的工作流程是A&B - > C就是這個 –

+0

沒有A&B ......你在Android中從一個活動跳到另一個活動。只需通過意圖傳遞跨活動所需的數據即可。 –

回答

0

,可以使用共享首選項來存儲數據,後來使用它們, 這裏的例子

要在共享偏好將數據存儲

1)在活動A

SharedPreferences sharedpreferences; 
sharedpreferences = getSharedPreferences("myPref", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
      editor.putString(EXTRA_COUNTRY_SITE,tvs.getText().toString()); 
      editor.commit(); 

2)在活動B

SharedPreferences sharedpreferences; 
sharedpreferences = getSharedPreferences("myPref", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
      editor.putString(EXTRA_COUNTRY_EMPLOYEE,tvs.getText().toString()); 
      editor.commit(); 

3)在活動Ç使用它們

SharedPreferences prefs = this.getSharedPreferences("myPref", Context.MODE_PRIVATE); 
String countrySite = prefs.getString(EXTRA_COUNTRY_SITE, null); 
String countryEmp = prefs.getString(EXTRA_COUNTRY_EMPLOYEE, null); 
+0

感謝兄弟多數民衆贊成真棒,解決我的問題。我希望我可以upvote你的答案。 :D XD –

+0

謝謝:)希望有人會 –

0

若C只從B和B只有從A然後添加束從A接收到的意圖在乙

Activity B 
... 
intent.putExtras(receivingBundle): 
... 

如果想從A或B, c。啓動活動Ç起始物C接收只接收來自開始活動的數據。

+0

我首先從C開始活動,然後開始活動A或B.在這裏,如果我的工作流程仍然令人困惑,或者我會混淆解釋它。來自A&B的數據 - > C。 –

0

我的理解是,你想將數據從A傳遞給B,然後把A和B的數據傳遞給C.如果是這樣的話,你必須將A和B數據都從B發送到C.但是你是隻發送B數據,因爲我可以看到代碼。

在B活性click事件

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    TextView tve = (TextView)view.findViewById(R.id.textViewEmpName); 
// Lets say textview just like String "Data B" 
    Intent intent = new Intent(view.getContext(), LoginActivityView.class); 
    intent.putExtra(EXTRA_COUNTRY_EMPLOYEE, tve.getText().toString()); 
    intent.putExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE, getIntent().getStringExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE)); 
// tvs.getText().toString() here you can change it to String 
    startActivityForResult(intent, REQUEST_RESPONSE_EMPLOYEE); 
} 

糾正我,如果我理解你的問題錯試試這個。

+0

我的意思是我想從a和b接收數據,而不是a或b。然後傳遞給活動C ... –

+0

然後爲A和B活動維護兩個公共靜態字符串,並在各個活動中的onclick事件之後將數據設置爲字符串。然後,您可以從C活動訪問A和B字符串。 – Chowdary102

+0

只需在B活動的onclick事件中添加此行,這將解決您的需求,我猜 intent.putExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE,getIntent()。getStringExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE)); – Chowdary102

相關問題