我正在使用兩個活動(ListActivity和DatabaseBaseActivity)並將兩個活動指向單個活動(DetailActivity)。我在兩個活動上都使用intent和putextra()將數組數據發送到DetailActivity。問題在於,我不知道如何區分單一活動中的不同意圖。這是我ListActivity代碼在單個活動中處理來自多個意圖的多個數據
我認爲問題主要在於其他if語句(我得到的NullPointerException)在DetailActivity和if語句工作正常
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);
}
}
}
在此先感謝
你可以看一下這個https://developer.android.com/reference/android/content/Intent.html#hasExtra(java.lang。字符串),如果它有幫助 – Raghunandan
我不認爲這會導致任何功能問題 –