Java 访问android中BroadcastReceiver类的onReceive方法中的ArrayList项
我正在开发一个应用程序,其中我想阻止用户创建列表的SMS。为此,我有一个活动,第二个是BroadcastReceiver类。在Activity类中,我有一个返回ArrayList的函数,在BroadcastReceive类中,我想访问该ArrayList,但我的代码无法访问该ArrayList。我的代码中有什么问题?Java 访问android中BroadcastReceiver类的onReceive方法中的ArrayList项,java,android,arraylist,broadcastreceiver,Java,Android,Arraylist,Broadcastreceiver,我正在开发一个应用程序,其中我想阻止用户创建列表的SMS。为此,我有一个活动,第二个是BroadcastReceiver类。在Activity类中,我有一个返回ArrayList的函数,在BroadcastReceive类中,我想访问该ArrayList,但我的代码无法访问该ArrayList。我的代码中有什么问题? 请引导我。 numberStactivity.java 这是一个列表类 public class NumberListActivity extends Activity {
请引导我。
numberStactivity.java
这是一个列表类
public class NumberListActivity extends Activity {
ListView numList1;
Button btnAdd1;
public ArrayList<String> list1 = new ArrayList<String>();
public ArrayAdapter<String> adapter1;
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_list);
numList1 = (ListView) findViewById(R.id.Smslist);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btnAdd);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
EditText edit = (EditText) findViewById(R.id.txtItem);
list.add(edit.getText().toString());
edit.setText("");
adapter.notifyDataSetChanged();
}
};
btn.setOnClickListener(listener);
numList1.setAdapter(adapter);
}
public ArrayList<String> getArrayList(){
return list;
}
}
public class numberStactivity扩展活动{
ListView numList1;
按钮btnAdd1;
public ArrayList list1=新的ArrayList();
公共阵列适配器1;
ArrayList=新建ArrayList();
阵列适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_列表);
numList1=(ListView)findViewById(R.id.Smslist);
setContentView(R.layout.main);
按钮btn=(按钮)findViewById(R.id.btnAdd);
adapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,list);
OnClickListener=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
EditText edit=(EditText)findViewById(R.id.txtItem);
添加(edit.getText().toString());
edit.setText(“”);
adapter.notifyDataSetChanged();
}
};
btn.setOnClickListener(listener);
numList1.setAdapter(适配器);
}
公共ArrayList getArrayList(){
退货清单;
}
}
SmsLock.java在这个类中,我想访问arrayList
public class SmsLock extends BroadcastReceiver {
final SmsManager sms = SmsManager.getDefault();
String phoneNumber;
String senderNum;
NumberListActivity ma = new NumberListActivity();
ArrayList<String> list=new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
try {
adapter=new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,list);
Toast.makeText(context, adapter.getCount()+"", Toast.LENGTH_LONG).show();
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage
.createFromPdu((byte[]) pdusObj[i]);
phoneNumber = currentMessage.getDisplayOriginatingAddress();
senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
}
for (int i = 0; i < adapter.getCount(); i++) {
if (senderNum.contains(adapter.getItem(i))) {
abortBroadcast();
}
}
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" + e);
}
}
}
公共类SmsLock扩展广播接收器{
final smsmsmanager sms=smsmsmanager.getDefault();
字符串电话号码;
字符串senderNum;
NumberStactivity ma=新的NumberStactivity();
ArrayList=新建ArrayList();
阵列适配器;
@凌驾
公共void onReceive(上下文、意图){
final Bundle=intent.getExtras();
试一试{
adapter=newarrayadapter(上下文,android.R.layout.simple\u list\u item\u 1,list);
Toast.makeText(上下文,adapter.getCount()+“”,Toast.LENGTH_LONG.show();
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
对于(int i=0;i
Intent in=getIntent()
ArrayList aList=in.getExtras().getIntegerArrayList(“key”) 一种方法是访问SMSLock类中的列表,将列表对象设置为静态。如果您的列表在不同的实例之间没有差异,则可以选择此选项 您是说要从
SmsLock
访问numberstactivity
中的实例变量list
?因为现在这两个类中有两个独立的列表。@DrewGalbraith:是的,先生,我想将列表从NumberStactivity保存到SmsLock类中。。先生,实例到实例意味着什么。意味着如果需要同一对象的多个副本,而不使用静态。静态将生成该对象的单个副本。