【问题标题】:How to do different actions for a different Extras sent to an activity?如何为发送到活动的不同 Extras 执行不同的操作?
【发布时间】:2017-04-16 20:00:22
【问题描述】:

我有一个显示对象信息的活动(TextView 名称、ImageView 图像等),我从 2 个不同的活动发送这些数据,虽然数据属于不同的类,但包含完全相同的属性,所以我总是可以用相同的getter获取名字或图片。 (对象基本上是相同的“类型”,但我需要创建 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

    }

【问题讨论】:

    标签: java android class object android-activity


    【解决方案1】:

    您可以简单地将 类名 作为 extra 发送,然后在目标活动中应用到您的 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
    
        }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多