在Android活动之间传递消息?

时间:2013-11-18 01:23:26

标签: android imagebutton message-passing

我正在开发一个应用程序,需要帮助在两个屏幕之间传递消息。第一个屏幕是一个注册表单,带有一个图像按钮,用于显示用户的显示图片。当用户首次打开此屏幕时,ImageButton使用drawable文件夹中的“defaultavatar.png”。在单击此图像按钮时,用户将被定向到具有GridView图标的屏幕以供选择。我需要将所选图像的编号传递回注册活动,并相应地更改ImageButton图像的来源。我该怎么做呢?这是我目前的代码:

在注册活动来源:

Intent intent = getIntent();
        String imagePos = intent.getStringExtra(AvatarListActivity.IMAGE_NUMBER);

        //String imageName = "@drawable/bigavatar" + imagePos;
        String PACKAGE_NAME = getApplicationContext().getPackageName();
        ImageButton displayPic = (ImageButton) findViewById(R.id.displayPic);
        int imgId;

        if(imagePos != null)
        {
            imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/bigavatar"+imagePos, null, null);
            displayPic.setImageBitmap(BitmapFactory.decodeResource(getResources(),imgId)); //src
        }
        else
        {
            imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/defaultavatar", null, null);
            displayPic.setImageBitmap(BitmapFactory.decodeResource(getResources(),imgId)); //src
        }   

在头像列表活动中:

GridView gridview = (GridView) findViewById(R.id.gridViewAvatars);
        gridview.setAdapter(new ImageAdapter(this));

        gridview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                //Toast.makeText(AvatarListActivity.this, "" + position, Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(getBaseContext(), SignUpActivity.class);

                intent.putExtra(IMAGE_NUMBER, position);
                startActivity(intent);
            }
        });

如何根据用户的选择更换图像? (注意:所有头像图标都被编号为bigavatar1,bigavatar2,bigavatar3等)。请尽快帮助,并提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以参考Android在线参考:Activity

  

开始活动和获得结果

     

startActivity(Intent)方法用于启动新活动,   它将被放置在活动堆栈的顶部。需要一个   单个参数,一个描述活动的Intent   执行。

     

有时您希望在活动结束时从结果中获取结果。   例如,您可以启动一个允许用户选择的活动   联系人列表中的人;当它结束时,它返回那个人   被选中了。为此,您调用startActivityForResult(Intent,   int)具有标识调用的第二个整数参数的版本。该   结果将通过你的onActivityResult(int,int,Intent)返回   方法

     

当一个活动退出时,它可以调用setResult(int)来返回数据   给它的父母。它必须始终提供结果代码,可以是   标准结果RESULT_CANCELED,RESULT_OK或任何自定义值   从RESULT_FIRST_USER开始。此外,它可以选择返回   返回包含所需的任何其他数据的Intent。所有这些   信息显示在父亲的Activity.onActivityResult()上,   以及它最初提供的整数标识符。

所以你应该使用startActivityForResult。并在发送回来时将数据绑定到intent。您可以使用bundle附加数据。

答案 1 :(得分:1)

根据您拥有的图片数量,sharedPreferences可能是您的赌注。根据用户在“头像列表”中选择的任何图像,为其指定一个数字。 EX:如果您有10张图片,请为每张图片指定一个数字。使用sharedPreferences将数字选择导入到您的第一个活动中,然后告诉它通过if语句显示哪个。