【发布时间】:2011-03-25 15:19:57
【问题描述】:
我需要将一个 ArrayList 传递给一个活动,所以我可以在那里列出它,但我不想立即开始那个活动。我需要在另一个“显示扫描的列表”按钮按下时开始列出活动。因为我想要传递的捆绑包上的按钮只包含一个finish(),当我准备好我的列表时,我用它返回我的主菜单,然后从那个菜单上我进入显示列表按钮。哪个开始另一项活动,我知道如何传递捆绑包的唯一方法是意图。但这会再次启动菜单活动。我希望有人能理解这个问题,我可能需要一些帮助。
谢谢你。
--编辑--
package org.example.sudoku;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;
public class Sudoku extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Set up click listeners for all the buttons
View exitButton = findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
View scanButton = findViewById(R.id.scan_button);
scanButton.setOnClickListener(this);
View editButton = findViewById(R.id.about_button);
editButton.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.scan_button:
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "ONE_D_MODE");
startActivityForResult(intent, 0);
break;
case R.id.about_button:
ArrayList<String> scanList = new ArrayList<String>();
scanList.add("asd");
scanList.add("asd2");
scanList.add("asd3");
//String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone"};
Intent about = new Intent(this.getApplicationContext(),About.class);
Bundle b = new Bundle();
b.putStringArrayList("key", scanList);
about.putExtras(b);
startActivityForResult(about, 0);
break;
case R.id.exit_button:
finish();
break;
}
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
// Handle successful scan
Intent result = new Intent(this.getApplicationContext(),Result.class);
Bundle b = new Bundle();
b.putString("content",contents);
result.putExtras(b);
startActivityForResult(result, 0);
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
}
这是我的主要活动。我不知道我是否理解正确,但我只需要另一个 public void onActivityResult(int requestCode, int resultCode, Intent intent) 来处理由 B 活动调用的完成的 C 活动? A 会知道标识符是 B 活动的原因吗? 我希望我明白了。
【问题讨论】: