如何针对发送到活动的其他额外内容执行不同的操作?

时间:2017-04-16 20:00:22

标签: java android class object android-activity

我有一个活动,显示有关对象的信息(TextView名称,ImageView图像等),我从2个不同的活动发送这些数据,而数据属于不同的类,但包含完全相同的属性,所以我总是可以用相同的吸气剂获得名称或图片。 (对象基本相同"类型"但我需要创建2个不同的类,因为我使用的是Realm数据库)。所以在目标活动中,我需要找出已发送给它的类,然后将资源设置为这些视图。

这是我的尝试,我不知道它是否正确(因为应用程序在某些情况下崩溃并且不知道故障是在这里还是其他地方所以我想要如果这样可以明确)。这些类称为Illusion和FavouriteIllusion,它们都是Parcelable,因此它们可以通过Extras发送。这是我的代码:

final Object item = getIntent().getExtras().get("item");

    if (item.getClass() == Illusion.class) {
        Illusion illusion = (Illusion) item;

        TextView title = (TextView) findViewById(R.id.tv_title);
        title.setText(illusion.getName());

        //some more resource settings here

    } else if (item.getClass() == FavouriteIllusion.class) {
        FavouriteIllusion illusion = (FavouriteIllusion) item;

        TextView title = (TextView) findViewById(R.id.tv_title);
        title.setText(illusion.getName());

        //some more resource settings here

    }

1 个答案:

答案 0 :(得分:0)

您只需将类名发送为额外,然后在目标活动中应用if-else条件:

Intent i = new Intent(Illusion.this, TargetActivity.class);
i.putExtra("class","Illusion");     // Do as this in FavouriteIllusion

在目标活动中:

  final Object item = getIntent().getExtras().get("item");
  String getClass = getIntent().getStringExtra("class");

    if (getClass.equals("Illusion")) {
        Illusion illusion = (Illusion) item;

        TextView title = (TextView) findViewById(R.id.tv_title);
        title.setText(illusion.getName());

        //some more resource settings here

    } else if (getClass.equals("FavouriteIllusion") {
        FavouriteIllusion illusion = (FavouriteIllusion) item;

        TextView title = (TextView) findViewById(R.id.tv_title);
        title.setText(illusion.getName());

        //some more resource settings here

    }

希望这有帮助。