Обработка нескольких данных из нескольких намерений в одном действии

Я использую два действия(ListActivity и DatabaseBaseActivity) и направляю оба действия на одно действие (DetailActivity) . Я использую intent и putextra() в обоих действиях для отправки данных массива в DetailActivity. Проблема заключается в том, что я не знаю, как различать разные намерения в одной деятельности . И это мой код ListActivity

Я думаю, что проблема в основном заключается в другом, если оператор (я получаю nullpointerexception) в DetailActivity и если оператор работает хорошо

public class ListActivity extends AppCompatActivity {

@Override
public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_view);


    final ArrayList<AppName> appNames = new ArrayList<AppName>();

    appNames.add(new AppName("app1","description1"));
    appNames.add(new AppName("app2","description2"));
    appNames.add(new AppName("app3","description3"));
    appNames.add(new AppName("app4","description4"));
    appNames.add(new AppName("app5","description5"));
    appNames.add(new AppName("app6","description6"));
    appNames.add(new AppName("app7","description7"));
    appNames.add(new AppName("app8","description8"));
    appNames.add(new AppName("app9","description9"));
    appNames.add(new AppName("app10","description10"));

    AppAdapter adapter = new AppAdapter(this , appNames);

    ListView listView = (ListView) findViewById(R.id.list);

    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                                       @Override
                                       public void onItemClick(AdapterView<?> parent, View view, int position, long id){

                                           String[] appdescription = getResources().getStringArray(R.array.appdescriptionname);
                                           final String appdescipl = appdescription[position];

                                           Intent intent1 = new Intent(getApplicationContext(), DetailActivity.class);
                                           intent1.putExtra("des","mydes");
                                           intent1.putExtra("appdescipl" , appdescipl);
                                           startActivity(intent1);



                                       }

   }

    );



}

это мой код DatabaseBaseActivity

public class DatabaseBaseActivity extends AppCompatActivity {

@Override
public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_view);


    final ArrayList<AppName> appNames = new ArrayList<AppName>();

    appNames.add(new AppName("appdata1","description1"));
    appNames.add(new AppName("appdata2","description2"));
    appNames.add(new AppName("appdata3","description3"));
    appNames.add(new AppName("appdata4","description4"));
    appNames.add(new AppName("appdata5","description5"));
    appNames.add(new AppName("appdata6","description6"));
    appNames.add(new AppName("appdata7","description7"));
    appNames.add(new AppName("appdata8","description8"));
    appNames.add(new AppName("appdata9","description9"));
    appNames.add(new AppName("appdata10","description10"));

    AppAdapter adapter = new AppAdapter(this , appNames);

    ListView listView = (ListView) findViewById(R.id.list);

    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                                        @Override
                                        public void onItemClick(AdapterView<?> parent, View view, int position, long id){

                                            String[] appdatadescription = getResources().getStringArray(R.array.appdatabasedescriptionname);
                                            final String appdatadescipl = appdatadescription[position];

                                            Intent intent2 = new Intent(getApplicationContext(), DetailActivity.class);
                                            intent2.putExtra("data" , "mydata");
                                            intent2.putExtra("appdatadescipl" , appdatadescipl);

                                            startActivity(intent2);



                                        }
                                    }

    );



}

}

Это DetailActivity

public class DetailActivity extends Activity{

String description;

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

    TextView descriptionofapp = (TextView)findViewById(R.id.descriptionofapp);

    Bundle extras = getIntent().getExtras();

    if ( extras.getString("des").equals("mydes") && extras!=null){

        description = extras.getString("appdescipl");
        descriptionofapp.setText(description);
    }

    else if (extras.getString("data").equals("mydata") && extras!=null){
        description = extras.getString("appdatadescipl");
        descriptionofapp.setText(description);
    }


}

}

Спасибо заранее

2 ответа

  1. вам не нужно различать намерения. getIntent () просто возвращает намерение, которое запустило действие. Попробовать это-

    String description =null;
    
    description = getIntent().getStringExtra("appdescipl");
    
    if(description==null) description = getIntent().getStringExtra("appdatadescipl");
    
    descriptionofapp.setText(description);
    
  2. попробовать это,

    Bundle extras = getIntent().getExtras();
    
    if(extras.containsKey("des")){
        description = extras.getString("appdescipl");
        descriptionofapp.setText(description);
    }
    else if (extras.containsKey("data")){
        description = extras.getString("appdatadescipl");
        descriptionofapp.setText(description);
    }
    
    //...... conditions / check with unique key to differentiate from calling activity