Java 启动触觉时出错

Java 启动触觉时出错,java,android,onitemclicklistener,Java,Android,Onitemclicklistener,祝大家新年快乐。 我对方法onItemClickListener有一个问题,因为当我尝试toast position和id时,在我的第二个活动中,我得到了零。 这是代码,我依赖于图像在数组中的位置,这就是我需要准确获取位置/id的原因。 + 我正在两个活动中复制我的数组,因为我不知道如何从第二个活动访问它 MainActivity.java package swe.trial; import android.content.Context; import android.widget.I

祝大家新年快乐。 我对方法onItemClickListener有一个问题,因为当我尝试toast position和id时,在我的第二个活动中,我得到了零。 这是代码,我依赖于图像在数组中的位置,这就是我需要准确获取位置/id的原因。 + 我正在两个活动中复制我的数组,因为我不知道如何从第二个活动访问它

MainActivity.java

    package swe.trial;
import android.content.Context;
import android.widget.ImageView;
import android.view.View;
import android.view.ViewGroup;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.AdapterView;
import android.widget.Toast;



public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        GridView items = (GridView) findViewById(R.id.itemsList);
        items.setAdapter(new item_adapter(this));
        items.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //if an item is clicked or selceted,then go to the activity itemDetails:
                Intent i= new Intent (MainActivity.this, itemDetails.class);
                i.putExtra("position", position);
                i.putExtra("id", id);
                startActivity(i);
            }
        });

    }

}


class item_adapter extends BaseAdapter {
    Integer[] picsId = {
            R.drawable.pic1,
            R.drawable.pic2,
            R.drawable.pic3,
            R.drawable.pic4,
            R.drawable.pic5,
            R.drawable.pic6,
            R.drawable.pic7};
    private Context context;


    public item_adapter(Context context) {
        this.context = context;
    }


    public Object getItem(int position) {
        return null;
    }


    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imgview= new ImageView(context);
        imgview.setLayoutParams(new GridView.LayoutParams(250,250));
        imgview.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imgview.setPadding(20,20,20,20);

        imgview.setImageResource(picsId[position]);
        return imgview;
    }


    public long getItemId(int position) {
        return position;
    }
    public int getCount (){
        return picsId.length;
    }
}
包swe.trial;
导入android.content.Context;
导入android.widget.ImageView;
导入android.view.view;
导入android.view.ViewGroup;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.content.Intent;
导入android.widget.BaseAdapter;
导入android.widget.GridView;
导入android.widget.AdapterView;
导入android.widget.Toast;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView项=(GridView)findViewById(R.id.itemsList);
items.setAdapter(新的item_适配器(this));
items.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//如果单击或选择了某个项目,请转到活动项目详细信息:
意图i=新意图(MainActivity.this、itemDetails.class);
i、 putExtra(“位置”,位置);
i、 putExtra(“id”,id);
星触觉(i);
}
});
}
}
类项_适配器扩展BaseAdapter{
整数[]picsId={
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5,
R.drawable.pic6,
R.drawable.pic7};
私人语境;
公用项_适配器(上下文){
this.context=上下文;
}
公共对象getItem(int位置){
返回null;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView imgview=新的ImageView(上下文);
imgview.setLayoutParams(新的GridView.LayoutParams(250250));
imgview.setScaleType(ImageView.ScaleType.CENTER\U裁剪);
imgview.设置填充(20,20,20,20);
imgview.setImageResource(picsId[position]);
返回imgview;
}
公共长getItemId(int位置){
返回位置;
}
公共整数getCount(){
返回picsId.length;
}
}
itemDetails.java

    package swe.trial;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.content.Intent;
import android.widget.ImageView;
import android.widget.TextView;
import android.app.Activity;
import android.net.Uri;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;

/**
 * Created by good on 1/01/17.
 */

public class itemDetails extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item);
        ArrayList<item> items = new ArrayList<item>();
//        items item1=
//        Bundle d = getIntent().getExtras();
        int id=0;getIntent().getIntExtra("id",id);
        int position=0;
        getIntent().getIntExtra("position", position);
        Toast.makeText( this, "id= " +id + " .  and posistion=  "+ position, Toast.LENGTH_LONG).show();

        Integer[] picsId = {
                R.drawable.pic1,
                R.drawable.pic2,
                R.drawable.pic3,
                R.drawable.pic4,
                R.drawable.pic5,
                R.drawable.pic6,
                R.drawable.pic7
        };

        ImageView imgview = (ImageView) findViewById(R.id.item_image);
        imgview.setImageResource(picsId[id+ 1]);
        TextView txt= (TextView) findViewById(R.id.pricetxtview);
        txt.setText("This is the description provided." + id);
        //(id);


//        item item1 = {"Red rose", "@/drawable/", 1, 1.25};
//        items.add(item1);
        // now i will search for the array that holds the given id. and i will retrieve its info and display it again
        // in the new layout.

    }
}
包swe.trial;
导入android.content.Context;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.content.Intent;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.app.Activity;
导入android.net.Uri;
导入android.view.view;
导入android.widget.Toast;
导入java.util.ArrayList;
/**
*由good于2017年1月1日创建。
*/
公共类itemDetails扩展了AppCompatActivity{
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.item);
ArrayList items=新建ArrayList();
//项目1=
//Bundle d=getIntent().getExtras();
int id=0;getIntent().getIntExtra(“id”,id);
int位置=0;
getIntent().getIntExtra(“位置”,位置);
Toast.makeText(这个“id=“+id+”。和posistion=“+position,Toast.LENGTH\u LONG).show();
整数[]picsId={
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5,
R.drawable.pic6,
R.drawable.pic7
};
ImageView imgview=(ImageView)findViewById(R.id.item_图像);
imgview.setImageResource(picsId[id+1]);
TextView txt=(TextView)findViewById(R.id.pricetxtview);
setText(“这是提供的描述。”+id);
//(id);
//项目1={“红玫瑰”,“@/drawable/”,1,1.25};
//增加(第1项);
//现在,我将搜索包含给定id的数组。我将检索其信息并再次显示它
//在新的布局中。
}
}

您必须按照以下方式获取值

int id=0;
 int position=0;
 i=getIntent().getIntExtra("id",id);
 position= getIntent().getIntExtra("position", position);
 Toast.makeText( this, "id= " +id + " .  and posistion=  "+ position, Toast.LENGTH_LONG).show();

你误解了使用意图的方式。 正确的形式如下:

 int id =getIntent().getIntExtra("id",0);
 int position = getIntent().getIntExtra("position", 0);
使用
getIntExtra
时,第二个参数是默认值。如果您的意图中没有该标记的值,它将返回该默认值。
有关更多信息,请参见

新年快乐!!你的错误在哪里!!你有没有试过让你的类实现你的监听器?例如:公共类MainActivity扩展了AppCompativeActivity实现了onItemClickListenerCharuka,错误在于获取发送给第二个活动的正确位置和id,这里就是:int id=0;getIntent().getIntExtra(“id”,id);但问题已经解决了。谢谢。请接受正确答案@LujainI尝试了以下方法:Bundle received=getIntent().getExtras();int b=接收到的.getInt(“位置”);它成功了。@Lujain,如果你发现我的答案是“使用全部”,那么就把这个答案标记为“接受”,这样其他人就会发现这个答案是“使用全部”。谢谢你,smartiz,你是对的,我误解了。我认为第一个参数是第一个活动在putExtra(“,)中给出的字符串名称。另外,你说得对,因为我是个初学者,被要求开发一个购物应用程序。我不知道我将如何成功!祝您在当前任务中取得成功@Lujain:D