Android - 两个活动的问题

时间:2011-08-20 12:55:56

标签: android android-activity android-intent

我的项目出了问题。我正在尝试在两个活动之间进行通信,但问题在于活动的意图。我有一个具有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);

                }
         { 
         }});

2 个答案:

答案 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"));