我想更改我的启动器活动。我首先创建的活动有可选择的listview。当用户第一次打开应用程序时;他将选择人员然后我的第二个创建的活动,这些选定的人来到我的自定义列表视图。我问题是;如何更改启动器活动,因为在我的第二个活动有自定义列表视图,如果用户不点击任何人我的第二个活动将是空的,以便我收到错误消息。如何解决这个问题?
我的第一项活动:
select sum(count), status from (select ceil(char_length(message)/70) as count, status from table) as data group by status
我的第二个活动:
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();
}
});
}
});
}
}
答案 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 ,如果没有显示文字,如果是,请转到下一个活动
打开 第二个活动而不是第一个,如果用户第二次启动活动,请执行此逻辑,在中活动在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!!!!
}
之前创建活动检查数据库是否有数据,如果是,请转到其他活动,因为活动未创建且布局尚未添加,因为用户与点击启动器图标时打开第二个活动相同。
答案 1 :(得分:0)
公共类LoginActivity扩展了Activity {
最能帮助你的是尝试在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);
}