2017-07-26 99 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); 
     } 
相關問題