2017-07-26 98 views
0

我想改变我的发射器活动。我第一次创建的活动有可选列表视图。当用户第一次打开应用程序时;他会选择人员,然后我的第二个创建的活动,这些选定的人来我的自定义listview.My问题是;如何更改启动器的活动,因为在我的第二个活动有自定义列表视图,如果用户不点击任何人我的第二个活动将是空的,这样我就能得到错误消息。我该如何解决这个问题?如何更改启动器活动如果我们必须使用自定义适配器创建第二个活动?

我的第一个活动:

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(); 
    } 
}); 
      } 
     }); 
    } 


} 

我的第二个活动:

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; 
     } 
    } 
+0

你想要当你第二次活动是空的发射第一次活动? –

+0

@BrunoFerreira我想他不希望第二个活动启动,如果没有在他的第一个活动中被选中 –

+0

我想要启动第二个活动,那么我将所有选择的项目记录到数据库(数据库现在不会创建) –

回答

0

因此,要解决空列表错误只是尝试做到这一点:

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(); 

       } 
    } 
    }); 

检查如果列表没有itens,如果没有显示文本,若是,进入下一活动

对于开放次活动的代替第一,如果用户第二次launchs活动super.oncreate之前做到这一点的逻辑,在第一个活动()检查,如果数据库具有数据如果是开始第二项活动,如果数据库为空则什么也不做。我的逻辑的

例子:

@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!!!! 
    } 

所以以前创建活动检查,如果数据库有数据,如果是去其他活动,因为活动不创建并且版面尚未添加,因为用户与点击启动时打开第二个活动相同她的图标。

+0

好的。我开始创建数据库加载到我的第二个activity.But我有一个问题。我不明白,你说super.oncreate()之前。你的意思是使用persistentState? –

+0

可能没有我会更新答案我想我的例子 –

+0

好吧,当我完成创建数据库时,我会在这里发表意见。感谢您帮助 –

0

公共类LoginActivity延伸活动{

有什么可以帮您的最多的是尽量把在OnCreate中相同的以下行来这里。
这将检查列表是否为空,如果是,则将重定向到列表活动,否则继续。

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //add some code to detect if parent is selected 
     if (parent == null){ 
      Intent in = new Intent(SecondActivity.this, PersonAcrivity.class); 
      startActivity(in); 
     } 
相关问题