我正在制作一个应用程序,该应用程序的主要活动有6个图像按钮。 主要活动的代码是
package org.personal.reader;
public class MainActivity extends Activity implements
Button.OnClickListener {
ArrayList<String> activeURL = new ArrayList<String>();
private Button Done, Refresh;
int i=0;
private ImageButton B1, B2, B3, B4, B5, B6;
public static final String LOG_TAG = "Main Activity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Done = (Button)findViewById(R.id.DONE);
Done.setOnClickListener(this);
Refresh = (Button)findViewById(R.id.REFRESH);
Refresh.setOnClickListener(this);
B1 = (ImageButton)findViewById(R.id.news1);
B1.setOnClickListener(this);
B2 = (ImageButton)findViewById(R.id.sports1);
B2.setOnClickListener(this);
B3 = (ImageButton)findViewById(R.id.weather1);
B3.setOnClickListener(this);
B4 = (ImageButton)findViewById(R.id.entertainment1);
B4.setOnClickListener(this);
B5 = (ImageButton)findViewById(R.id.health1);
B5.setOnClickListener(this);
B6 = (ImageButton)findViewById(R.id.tech1);
B6.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if ( v==B1)
{
Intent intent = new Intent(MainActivity.this, Reader.class);
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
if ( v==B2 )
{
Intent intent = new Intent(MainActivity.this, Reader2.class);
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
if ( v==B3 )
{
Intent intent = new Intent(MainActivity.this, Reader3.class);
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
if ( v==B4 )
{
Intent intent = new Intent(MainActivity.this, Reader4.class);
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
if ( v==B5 )
{
Intent intent = new Intent(MainActivity.this, Reader5.class);
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
if ( v==B6 )
{
Intent intent = new Intent(MainActivity.this, Reader6.class);
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
if (v==Done)
{ ArrayList<String> array =add();
Bundle bundle = new Bundle();
bundle.putStringArrayList("DONE", array);
Intent myIntent = new Intent(MainActivity.this,Aggregator.class);
myIntent.putExtra("agg", array);
startActivity(myIntent);
}
}
public ArrayList<String> add()
{
Bundle bundle=this.getIntent().getExtras();
ArrayList<String> temp = bundle.getStringArrayList("reader");
ArrayList<String> temp1 = new ArrayList<String>();
temp1=temp;
if (temp1!=null)
activeURL.addAll(temp1);
return activeURL;
}
}
单击任何单选按钮时,将打开一个新活动。 其中一个活动的代码是
public class Reader extends Activity implements
Button.OnClickListener {
/** Called when the activity is first created. */
private RadioButton RB1, RB2, RB3, RB4, RB5;
private Button Done;
ArrayList<String> activeURL1 = new ArrayList<String>();
public static final String LOG_TAG = "Activity 1";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
RB1 = (RadioButton) findViewById(R.id.BBC);
RB2 = (RadioButton) findViewById(R.id.Guardian);
RB3 = (RadioButton) findViewById(R.id.msnbc);
RB4 = (RadioButton) findViewById(R.id.Sky);
RB5 = (RadioButton) findViewById(R.id.FOX);
Done = (Button) findViewById(R.id.DONE);
Done.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String[] array;
array = new String[5];
array[0] = "http://feeds.bbci.co.uk/news/world/rss.xml";
array[1] = "http://feeds.guardian.co.uk/theguardian/rss";
array[2] = "http://rss.msnbc.msn.com/id/3032506/device/rss/rss.xml";
array[3] = "http://news.sky.com/sky-news/rss/world-news/rss.xml";
array[4] = "http://www.foxnews.com/about/rss/feedburner/foxnews/most-popular";
if (RB1.isChecked() == true)
activeURL1.add(array[0]);
if (RB2.isChecked() == true)
activeURL1.add(array[1]);
if (RB3.isChecked() == true)
activeURL1.add(array[2]);
if (RB4.isChecked() == true)
activeURL1.add(array[3]);
if (RB5.isChecked() == true)
activeURL1.add(array[4]);
if(v==Done)
{
Bundle bundle = new Bundle();
bundle.putStringArrayList("DONE", activeURL1);
Intent myIntent = new Intent(Reader.this,MainActivity.class);
myIntent.putExtra("reader", activeURL1);
startActivity(myIntent);
}
}
}
我有6个活动......我需要从每个活动传递一个数组Arraylist并在MainActivity中收集一个Arraylist ...最后将此列表传递给另一个类。
如何从所有活动中传递此列表并将其收集到主要活动中?
答案 0 :(得分:1)
如果你有一个arraylist,你希望可以在整个系统中访问,你可以在Application类中放置一个holder arraylist,并提供getter和setter,以便他们的系统可以全局使用它。如果它只需要从一个活动移动到另一个活动,我建议将它放在捆绑包中。
答案 1 :(得分:0)
通过尝试它可能正在发挥作用:
Bundle bundle = new Bundle();
bundle.putStringArrayList("DONE", activeURL1);
Intent myIntent = new Intent(Reader.this,MainActivity.class);
myIntent.**putStringArrayListExtra**("reader", activeURL1);
startActivity(myIntent);
最佳,
答案 2 :(得分:0)
我会远离每个活动传递一个arraylist,因为这可能会导致一些记忆问题,正如我所发现的那样。更好的方法之一是创建所有活动都可以看到的全局列表。我用我的bluetoothAdapter做了这个,因为检索它有点慢并且设置全局是更快的实现...我会对你的数组列表做同样的事情
public class MyStates extends Application {
/** The bluetooth adapter for the phone **/
private BluetoothAdapter blueToothAdapter;
public BluetoothAdapter getBtState() {
return this.blueToothAdapter;
}
public void setBtState(BluetoothAdapter cust) {
this.blueToothAdapter = cust;
}
}