Spinner не отображается на устройстве, но на эмуляторах - PullRequest
0 голосов
/ 04 июля 2018

Моя первоначальная домашняя активность в моем приложении для Android содержит счетчик, заполненный базой данных. На эмуляторе это работает абсолютно нормально. Когда я подключил телефон к компьютеру и запустил приложение, оно также работает нормально. Однако, когда он работает на моем телефоне автономно (т.е. без подключения к Android Studio), спиннер не отображается при первом открытии приложения. Однако, если я выйду из этого действия и вернусь к нему, или даже перезапущу это действие, изменив ориентацию экрана, отобразится счетчик, который будет работать до тех пор, пока приложение не будет закрыто. Я пробовал на пару телефонов с тем же результатом. Я сопоставил эмуляторы с API и разрешением моего телефона, но не могу воспроизвести ошибку. Кто-нибудь еще испытывал это?

public class StartPage extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

String testusername;
String mUser;
int mPosition;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_page);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setTitle(R.string.app_name);
    toolbar.setTitleTextColor(getResources().getColor(R.color.textColor));
    setSupportActionBar(toolbar);

    // Get the Intent that started this activity
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();


   //get reference to database helper
    SQLiteOpenHelper deadly60DatabaseHelper = new Deadly60DatabaseHelper(this);
    //get reference to database (read access)
    SQLiteDatabase db = deadly60DatabaseHelper.getReadableDatabase();

    //return all records in username table
    Cursor cursor = db.query("USERLIST", new String[] {"_id","USERNAME"}, null, null, null, null, null);
    //String temp = DatabaseUtils.dumpCursorToString(cursor);

    //put contents of cursor into an array list
    ArrayList<String> mArrayList = new ArrayList<String>();
    cursor.moveToFirst();
    while(!cursor.isAfterLast()) {
        mArrayList.add(cursor.getString(cursor.getColumnIndex("USERNAME"))); //add the item
        cursor.moveToNext();
    }

    //find position of user just added or played in cursor so that can default to this in drop down spinner
    if(bundle != null){
        String user = bundle.getString("USERNAME");
        mUser = user;
        mPosition = mArrayList.indexOf(mUser);
    }
        else{
        mPosition=0;
        mUser = mArrayList.get(0);
    }

    Spinner spinner = (Spinner) findViewById(R.id.usernamespinner);
    spinner.setVisibility(View.VISIBLE);

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(
            this, // context
            R.layout.my_spinner, // layout file
            cursor, // DB cursor
            new String[]{"USERNAME"}, // data to bind to the UI
            new int[]{android.R.id.text1}, // views that'll represent the data from `fromColumns` 
            0
    );

    adapter.setDropDownViewResource(R.layout.my_spinner_dropdown);
    //adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);
    spinner.setSelected(true);
    spinner.setSelection(mPosition); //set the selected user to the user just added or played
    spinner.setOnItemSelectedListener(this);
}
...