I want to change my launcher activity.My first created activity has selecteable listview.When user"s open the application at first time;He will select persons then my second created activity that these selected persons come to my custom listview.My problem is ; How to change launcher activity because at my second activity has custom listview that if User dont click to any persons my second activity will be empty so that I get error message.How can I fix this ?
My first activity :
public class MainActivity extends AppCompatActivity {
ArrayList<String> selectedlistisim = new ArrayList<>();
int girisyazısıcount = 2 ;
ArrayList<String> listte = new ArrayList<String>();
String phonenumber;
ArrayList<String> selectedlist = new ArrayList<>();
ListView chosinglist;
Button kaydet ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
kaydet = (Button) findViewById(R.id.kaydet);
chosinglist = (ListView) findViewById(R.id.chosing);
chosinglist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
getNumber(this.getContentResolver());
}
private void getNumber(ContentResolver contentResolver) {
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
phonenumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println(".................."+phonenumber);
listte.add(phonenumber);
}
phones.close();// close cursor
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.checkrow,
R.id.checkedTextView2,listte);
kaydet.setEnabled(false);
chosinglist.setAdapter(adapter);
chosinglist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selecteditem = ((TextView)view).getText().toString();
if (selectedlist.contains(selecteditem)){
selectedlist.remove(selecteditem);
}else selectedlist.add(selecteditem);
if (selectedlist.size() >= 5 && selectedlist.size() < 16 ) {
kaydet.setEnabled(true);
}
if (selectedlist.size() == 16){
kaydet.setEnabled(false);
}
if (selectedlist.size() == 4){
kaydet.setEnabled(false);
}
kaydet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AnaMenu.class);
i.putStringArrayListExtra("listem",selectedlist);
startActivity(i);
Toast.makeText(MainActivity.this, "abc.", Toast.LENGTH_LONG).show();
MainActivity.this.finish();
}
});
}
});
}
}
My second Activity :
public class AnaMenu extends AppCompatActivity {
public static final int MENU_Ara = Menu.FIRST + 1;
OyunTextView oyunTextView;
static final int AnketDegerlendirmesi = 1337;
int selectedPosition ;
String[] afteractivitydialogitems;
int toplamaislemi;
String[] dialogdegerleri;
boolean[] dialogcheckeditems;
String toast;
TextView sayılar;
ListView liste;
int a = 60 ;
ArrayList<String> kullanıcısayıdegerlistesi = new ArrayList<>();
ArrayList<Integer> mUserselecteditems = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ana_menu);
liste = (ListView) findViewById(R.id.oyun);
//Adapter im.
oyunTextView = new OyunTextView();
liste.setAdapter(oyunTextView);
registerForContextMenu(liste);
afteractivitydialogitems = getResources().getStringArray(R.array.anket);
dialogcheckeditems = new boolean[afteractivitydialogitems.length];
dialogdegerleri = getResources().getStringArray(R.array.anketdeğer);
//show the first activity when First time launched application.
SharedPreferences prefs = this.getSharedPreferences("MyAppPrefs", MODE_PRIVATE);
boolean settingsFilled = prefs.getBoolean("SettingsFilled", false);
if (!settingsFilled){
Intent sa = new Intent(AnaMenu.this,MainActivity.class);
startActivity(sa);
SharedPreferences pr = this.getSharedPreferences("MyAppPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("SettingsFilled", true);
editor.commit();
}
}
class OyunTextView extends BaseAdapter {
@Override
public int getCount() {
Intent i = getIntent();
final ArrayList<String> secilmis = i.getStringArrayListExtra("listem");
return secilmis.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = getLayoutInflater().inflate(R.layout.oyuntextview, null);
TextView namesbox = (TextView) convertView.findViewById(R.id.isim);
sayılar = (TextView) convertView.findViewById(R.id.sayı);
Intent i = getIntent();
final ArrayList<String> secilmis = i.getStringArrayListExtra("listem");
for (int defa = 0; defa < secilmis.size(); defa++) {
kullanıcısayıdegerlistesi.add("50");
// if (kullanıcısayıdegerlistesi.contains("50")){sayılar.setTextColor(getResources().getColor(R.color.elli));}
}
namesbox.setText(secilmis.get(position));
sayılar.setText(kullanıcısayıdegerlistesi.get(position));
sayılar.setTextColor(getResources().getColor(R.color.elli));
convertView.setBackgroundColor(getResources().getColor(R.color.yüz));
return convertView;
}
}
So to fix the empty list error just try do this:
kaydet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(selectedlist.size()>0){
Intent i = new Intent(MainActivity.this, AnaMenu.class);
i.putStringArrayListExtra("listem",selectedlist);
startActivity(i);
Toast.makeText(MainActivity.this, "abc.", Toast.LENGTH_LONG).show();
MainActivity.this.finish();
}else{
Toast.makeText(MainActivity.this, "No itens added", Toast.LENGTH_LONG).show();
}
}
});
This check if list not have itens and if not show text, if yes go to the next activity.
For open the second activity instead of first, if user launchs activity for the second time do this logic, in first activity before super.oncreate() check if database has data if yes start second activity, if database is empty do nothing.
Example of my logic:
@Override
protected void onCreate(Bundle savedInstanceState) {
//here you check if database has data
if(hasdata){
//start second activity
}
super.onCreate(savedInstanceState);
//Or if you want you can put logic here is the same
setContentView(R.layout.activity_loginactivity);
//Not put here below setcontentview!!!!
}
So before create the activity check if database has data and if yes go to other activity, because activity as not created and layout has not added, for user is the same as opens the second activity when click in launcher icon.