我正在尝试在按下选项菜单时在一个活动的字符串ArrayList中发布。但是,当我在下一页尝试getIntent()
时,它会返回空值。
选择项目时的选项菜单代码:
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==2){
ArrayList<String>data1=new ArrayList<>();
data1.add("Hello");
data1.add("bye");
Intent i = new Intent(MainActivity.this,SecondActivity.class);
i.putExtra("dataList",data1);
startActivity(i);
}
return true;
}
检索数据活动:
public class SecondActivity extends AppCompatActivity {
ListView lListView;
ArrayAdapter<String> adapter;
Intent intent = getIntent();
ArrayList<String> data = intent.getStringArrayListExtra("dataList");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
lListView = (ListView)findViewById(R.id.lListView);
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
lListView.setAdapter(adapter);
}
}
答案 0 :(得分:1)
Intent intent = getIntent();
ArrayList<String> data = intent.getStringArrayListExtra("dataList");
在oncreate
中添加此行答案 1 :(得分:1)
将此代码移至onCreate
方法:
Intent intent = getIntent();
ArrayList<String> data = intent.getStringArrayListExtra("dataList");
在您尝试获取它时,Intent不存在,它将在您的活动的生命周期中稍后传递。这就是你得到null
的原因。
答案 2 :(得分:1)
检查我在代码中所做的更改。应该调用getIntent() 在里面创造...
public class SecondActivity extends AppCompatActivity {
ListView lListView;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//changes
Intent intent = getIntent();
ArrayList<String> data =
intent.getExtras().getStringArrayListExtra("dataList");
//changes
lListView = (ListView)findViewById(R.id.lListView);
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
lListView.setAdapter(adapter);
}
}
答案 3 :(得分:0)
首先设置
i.putStringArrayListExtra("dataList",data1);
然后调用 Oncreate()部分;
Intent intent = getIntent();
ArrayList<String> data = intent.getStringArrayListExtra("dataList");
最后
public class SecondActivity extends AppCompatActivity {
ListView lListView;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
ArrayList<String> data = intent.getStringArrayListExtra("dataList");
lListView = (ListView)findViewById(R.id.lListView);
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
lListView.setAdapter(adapter);
}
}
答案 4 :(得分:0)
您应该使用ArrayList
在代码中设置// this will only work if jQuery is loaded
$('#idOfMyCheckbox').on('change', function() {
$.post(
'/url/of/my/checkbox/saver',
{
state: $(this).val()
},
function(ret) {
alert("The server replied: " + ret.message);
}
).fail(function() {
alert("something went very wrong");
});
});
答案 5 :(得分:0)
尝试onCreate()中的其他活动:
cout << it->roll << ' ' << it->name << ' ' << it->marks << " is top in the class\n";
或
ArrayList<String> data = (ArrayList<String>) getIntent().getSerializableExtra("dataList");