Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:将数据从适配器类发送到活动_Java_Android - Fatal编程技术网

Java Android:将数据从适配器类发送到活动

Java Android:将数据从适配器类发送到活动,java,android,Java,Android,当用户点击图片时,我想将图片添加到我最喜欢的活动中。到目前为止,我能够获取数据并显示它,但出于某种原因,每当我点击一个图像时,它会显示喜爱的图像,然而,当我通过单击它重新检查喜爱的活动时,它会显示为空。 这是小流程图 imageOnTap在RecyclerAdapter类上实现。我有我最喜欢的活动和main活动。如有任何帮助,将不胜感激。谢谢 这是我的MyRecyclerAdapter课程 @Override public void onBindViewHolder(M

当用户点击图片时,我想将图片添加到我最喜欢的活动中。到目前为止,我能够获取数据并显示它,但出于某种原因,每当我点击一个图像时,它会显示喜爱的图像,然而,当我通过单击它重新检查喜爱的活动时,它会显示为空。 这是小流程图

imageOnTap
RecyclerAdapter
类上实现。我有我最喜欢的
活动
main活动
。如有任何帮助,将不胜感激。谢谢

这是我的
MyRecyclerAdapter
课程

     @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {

          holder.nameTxt.setText(albums.get(position).getName());
          holder.img.setImageResource(albums.get(position).getImage());

         //listener
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onItemClick(View v, int pos) {
                    Toast.makeText(c,albums.get(pos).getName() + " ,added to favorite ",Toast.LENGTH_SHORT).show();



SharedPreferences settings = c.getSharedPreferences(PREFS_NAME,0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("favorite",albums.get(pos).getImage());
            editor.commit();

            Toast.makeText(c,albums.get(pos).getName() + " ,added to favorite ",Toast.LENGTH_SHORT).show();

            Intent intent = new Intent(c, favorite.class);
           // intent.putExtra(Intent.EXTRA_TEXT, albums.get(pos).getImage());
            c.startActivity(intent);




                }
            });
        }
这是我最喜欢的活动

  public class favorite extends AppCompatActivity {
        int favImage;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_favorite);

                ImageView displayImage = (ImageView) findViewById(R.id.movieImage);




         SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);

            displayImage.setImageResource(settings.getInt("Favorite", 0));


    //            Intent intent = getIntent();
    //            if (intent.hasExtra(Intent.EXTRA_TEXT)) {
    //                favImage = intent.getIntExtra(Intent.EXTRA_TEXT,image);
    //                displayImage.setImageResource(favImage);
    //
    //            }
             }
        }
这是我的主要活动

public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();


        if (id == R.id.nav_favorite) {

            Intent intent = new Intent(this,favorite.class);
            startActivity(intent);

        }

如果您正在从导航菜单中检查喜爱的活动,那么在您没有传递任何意图附加信息之后,它将不会显示任何内容。单击图像时是否显示该图像?您在这里得到的意图参数为空吗?

使用这些首选项:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctx.getApplicationContext());
在您的情况下,可能是不同的活动观察不同的设置区域

即:

使用:

而不是:

SharedPreferences settings = c.getSharedPreferences(PREFS_NAME,0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("favorite",albums.get(pos).getImage());
            editor.commit();
  SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);

            displayImage.setImageResource(settings.getInt("Favorite", 0));
及 这:

而不是:

SharedPreferences settings = c.getSharedPreferences(PREFS_NAME,0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("favorite",albums.get(pos).getImage());
            editor.commit();
  SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);

            displayImage.setImageResource(settings.getInt("Favorite", 0));

如果(id==R.id.nav_favorite){Intent Intent Intent=new Intent(this,favorite.class);startActivity(Intent)}您缺少navigationitemselectedreplace
Intent.EXTRA_TEXT
的Intent值,使用您自己的常量键,如
MY_IMAGE\u URL
@AmrutBidri,您的意思是我应该这样更改->。intent.putExtra(“MyImage”,albums.get(pos.getImage())@是的,我猜到了。我应该放什么?是的。更改键当我点击图像时,它会在收藏夹活动中显示图像。如果您想在将来使用它,必须将此intent值保存在shared pref中或将其指定给静态常量。从菜单打开时,将此值传递到收藏夹活动的意图中。因此,我应该使用sharedPref将此意图值保存在我的RecyclerAdapter类中,并将该值传递给收藏夹活动吗?是,或者将其保存到静态变量并在导航项中传递。单击意图我已经使用sharedPref编辑了我的代码。你能看一下吗?当我点击它时,我什么也看不到。对不起,我应该把它放在哪里?@user7062312更新。Everywhere将detting var设置为此值抱歉,我不明白您想说的只是为了确认,您在发布ctx.getApplicationContext()时是否使用了上下文?我尝试了您的代码,但它没有显示任何内容。看起来没有传递任何数据