我正在尝试将ArrayList从一个活动转到另一个活动,然后将一些数据添加到列表中,然后再次传递它。 问题是,当我这样做时,我必须在课堂级别声明它,但后来我的问题是。在类级别声明时如何从意图中获取数据?
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "Start onCreate Listan");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listan);
Bundle listan = getIntent().getExtras();
ArrayList<Produkt> lista = (ArrayList<Produkt>) getIntent().getSerializableExtra("list");
if (lista.isEmpty()) {
Log.d(TAG, "lista==null");
ListProduktAdapter adapter = new ListProduktAdapter(Listan.this, lista);
ListView listView = (ListView) findViewById(R.id.listView);
Bundle produktInfo = getIntent().getExtras();
String name = produktInfo.getString("name").toString();
String allergen = produktInfo.getString("allergen").toString();
Produkt produkt = new Produkt(allergen, name);
Log.d(TAG, "gjort produkt");
lista.add(produkt);
listView.setAdapter(adapter);
}
else {
ListProduktAdapter adapter = new ListProduktAdapter(Listan.this, lista);
ListView listView = (ListView) findViewById(R.id.listView);
Bundle produktInfo = getIntent().getExtras();
String name = produktInfo.getString("name").toString();
String allergen = produktInfo.getString("allergen").toString();
Produkt produkt = new Produkt(allergen, name);
Log.d(TAG, "gjort produkt");
lista.add(produkt);
listView.setAdapter(adapter);
}
}
这是我将再次传递它的方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d(TAG, "Scanning Failed");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d(TAG, "Scannad");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
Intent i = new Intent(this, getXML.class);
i.putExtra("barCode", result.getContents());
i.putExtra("list", lista);
startActivity(i);
Log.d(TAG, "Going to new activity");
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
我得到的错误是它“无法解析i.putExtra上的符号'lista'”(“list”,lista); 关于“onActivityResult”
我通过在mainactivity中启动对象并将其传递给空的活动流来解决问题,直到我开始向其添加数据。
答案 0 :(得分:0)
您可以使用Java接口。但是,如果您想使用复杂性较低的方法,您还可以使用以下方法。
而是声明两个单独的Activity文件,您可以在活动类文件中声明活动文件。如
href="#"
就像那样,你可以在一个文件中声明两个活动,也可以轻松地从彼此传递数据。
并且在清单中声明使用以下方法:
public class Outerclass{
//instance method of the outer class
void my_Method(){
int num = 23;
//method-local inner class
class MethodInner_Demo{
public void print(){
System.out.println("This is method inner class "+num);
}
}//end of inner class
//Accessing the inner class
MethodInner_Demo inner = new MethodInner_Demo();
inner.print();
}
public static void main(String args[]){
Outerclass outer = new Outerclass();
outer.my_Method();
}
}
但你必须使用
将innerClass decalre为Static<activity android:name="com.example.foo.OuterActivity$InnerActivity" ></activity>
答案 1 :(得分:0)
如果我误解了你的问题,请纠正我,但为什么要宣布
`ArrayList<Produkt> lista = (ArrayList<Produkt>) getIntent().getSerializableExtra("list");`
在onCreate()中?
您在onCreate()方法中声明变量而不是作为类成员实例。