Intent オブジェクトと、それを使用してアクティビティ間でデータを渡す方法についてはよくわかりません。私のアプリケーションには、ArrayList を渡したいタブがいくつかあります。使用する予定のサンプル コードを次に示しますが、メイン アクティビティが Intent をキャッチし、それを start で新しいアクティビティに渡す部分がありません。
1. myTabs.java ==> ここに、TabOne と TabTwo の間でデータを渡すためのコードを追加する必要があると思います。今のところ、TabActivity サンプルのサンプル コードを使用しているだけです。
public class myTabs extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, TabPeopleActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("TabOne").setIndicator("TabOne",
res.getDrawable(R.drawable.ic_tab_one))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, TabTransactionActivity.class);
spec = tabHost.newTabSpec("TabTwo").setIndicator("TabTwo",
res.getDrawable(R.drawable.ic_tab_two))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
2. TabOne.java ==> onStop プロシージャにコードを追加して、TabTwo に渡したい配列を Intent データに入力しました。ただし、それが正しい方法であるかどうかはわかりません。
public class TabOne extends Activity {
[...]
private ArrayList<String> arrayPeople;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabone);
arrayPeople = new ArrayList<String>();
[... here we modify arrayPeople ...]
}
/** Called when the activity looses focus **/
@Override
public void onStop(){
Intent myIntent = new Intent();
myIntent.putStringArrayListExtra("arrayPeople", arrayPeople);
this.setIntent(myIntent);
}
}
3. TabTwo.java ==> ここでは、Activity の開始時に渡されるはずの Intent から ArrayList を取得しようとしています。しかし、これを行う方法は?
public class TabTwo extends Activity {
private ArrayList<String> arrayPeople;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transaction);
Intent myIntent = new Intent();
myIntent = this.getIntent();
arrayPeople = myIntent.getStringArrayListExtra("arrayPeople");
}
}
あなたのアイデアをありがとう!
編集 :
簡単に説明すると、プロジェクトの完全なワークスペースは次のとおりです。
http://www.lecompteestbon.com/Android.LCEB.zip
私がやりたいのは、ウェブサイト lecompteestbon のオフライン バージョンです。これにより、人々は週末の後に友人間で会計を行うことができます。
TabPeople = Add the list of friends
TabTransactions = List of expenses
TabTransaction = Add an expense
TabResult = Calculate the list of payments
これを機能させる方法を教えてください:)