我的项目出了问题。我正在尝试在两个活动之间进行通信,但问题在于活动的意图。我有一个具有ListView的搜索活动,当我点击ListView的项目时,我想查看有关该项目的详细信息,但它不会发生。有人可以帮助我吗?这是关于我的项目的链接。 http://www.mediafire.com/?b4zcqtbeah8wlx9非常感谢你。
编辑:
这是详情活动:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
public class Details extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.last_layout);
final Intent intent = getIntent();
if (intent.hasExtra("selectedChild"))
{
final Child selectedChild = (Child) intent.getSerializableExtra("selectedChild");
if (selectedChild != null)
{
((TextView) findViewById(R.id.Title)).setText(selectedChild.getName());
((ImageView) findViewById(R.id.imageView1)).setImageResource(getResources().getIdentifier(selectedChild.getImage(),
"drawable", "com.test.com"));
}
}
}
}
这是搜索活动:
import java.util.ArrayList;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.app.Activity;
import android.content.Intent;
import android.widget.ArrayAdapter;
public class Search extends Activity {
private ListView lv1;
private EditText ed;
private String lv_arr[] = {
"America",
"Busta",
"Cactus",
"Fire",
"Garden",
"Hollywood",
"King",
"Laboratorio",
"Malta",
"Nespola",
"Pera",
"Rosa",
"Sapone",
"Verano",
};
private ArrayList<String> arr_sort= new ArrayList<String>();
int textlength=0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
lv1=(ListView)findViewById(R.id.ListView1);
ed=(EditText)findViewById(R.id.EditText1);
lv1.setClickable(true);
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Intent intent = new Intent(Search.this, Details.class);
startActivity(intent);
}
{
}});
答案 0 :(得分:0)
我没有查看你的代码,因为你没有直截了当地指出你认为你的问题在哪里。
但是,更一般地说,在两个活动中传递/使用相同的数据: 我认为使用一个可以读写数据的小型数据库可能是个明智之举。 每个活动都可以使用它,因此始终可以访问所有和最新版本。
如果您想使用您的方法,Intents可以在您通过startActivityForResult()
启动Intent时传递数据。
答案 1 :(得分:0)
我建议您通过documentation阅读以了解putExtra()
的作用。
我不知道Child
应该是什么,但是没有putExtra(String name, Child child)
方法,所以你使用这种方法是错误的。
根据建议,您可以使用数据库存储数据。
其他选项:
您似乎从Child
班级,selectedChild.getName()
和selectedChild.getImage()
中提取了两个字符串。相反,您可以传入两个字符串作为额外内容,并将其从“详细信息”活动中的“意图”中拉出来:
搜索活动:
intent.putExtra("NAME", selectedChild.getName());
intent.putExtra("IMAGE", selectedChild.getImage());
startActivity(intent);
详情活动:
String name = getIntent().getStringExtra("NAME");
String image = getIntent().getStringExtra("IMAGE");
((TextView) findViewById(R.id.Title)).setText(name);
((ImageView) findViewById(R.id.imageView1)).setImageResource(getResources().getIdentifier(image,
"drawable", "com.test.com"));