Во многих источниках говорится, что код из стороннего потока не может изменять экран приложения(UI) и для этого нужно использовать Handler
, runOnUiThread()
и т.д.
Так почему мой поток созданный в onCreate()
изменяет View
на экране и приложение не выдает ошибку?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_info);
activity=this;
intent = getIntent();
final String[] selectionArgs = {""+intent.getLongExtra("id",-100)};
oiNames = (TextView) findViewById(R.id.oiNames);
oiPhone = (TextView) findViewById(R.id.oiPhone);
oiDate = (TextView) findViewById(R.id.oiDate);
oiCAddress = (TextView) findViewById(R.id.oiCAddress);
oiTotalPayment = (TextView) findViewById(R.id.oiTotalPayment);
llOIForItems =(LinearLayout)findViewById(R.id.llOIForItems);
oillBackground = (ScrollView) findViewById(R.id.oillBackground);
llFor1 = (LinearLayout)findViewById(R.id.llFor1);
pBarOrder = (ProgressBar)findViewById(R.id.pBarOrder);
final LayoutInflater inflater = getLayoutInflater();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
MyDataBase mDB = new MyDataBase(activity);
SQLiteDatabase sqlDB = mDB.getWritableDatabase();
Cursor cursor = sqlDB.query(NAME_OF_CONNECTOR_TABLE,null,IDSH_CONNECTOR_TABLE+"= ?",
selectionArgs,null,null,null);
Cursor cursorForProduct;
if(cursor.moveToFirst()){
int idPColIndex = cursor.getColumnIndex(IDP_CONNECTOR_TABLE);
int amountColIndex = cursor.getColumnIndex(AMOUNT_CONNECTOR_TABLE);
int nameColIndex; //= cursor.getColumnIndex(NAME_PRODUCTS_TABLE);
int priceColIndex; //= cursor.getColumnIndex(PRICE_PRODUCTS_TABLE);*/
do{
View itemView = inflater.inflate(R.layout.item_order,null,false);
TextView itemName = (TextView)itemView.findViewById(R.id.itemName);
TextView itemAmount=(TextView)itemView.findViewById(R.id.itemAmount);
TextView itemPrice= (TextView)itemView.findViewById(R.id.itemPrice);
double val=0;
String[] idP = {""+cursor.getLong(idPColIndex)};
cursorForProduct = sqlDB.query(NAME_OF_PRODUCTS_TABLE,null,ID_PRODUCTS_TABLE+"= ?",
idP,null,null,null);
if(cursorForProduct.moveToFirst()){
nameColIndex = cursorForProduct.getColumnIndex(NAME_PRODUCTS_TABLE);
priceColIndex = cursorForProduct.getColumnIndex(PRICE_PRODUCTS_TABLE);
val= Double.parseDouble(cursorForProduct.getString(priceColIndex));
itemName.setText(cursorForProduct.getString(nameColIndex));
itemPrice.setText(String.format("%.2f",Double.parseDouble(cursorForProduct.getString(priceColIndex)) ));
}
itemAmount.setText(cursor.getString(amountColIndex));
totalPayment+=val*cursor.getLong(amountColIndex);
cursorForProduct.close();
llOIForItems.addView(itemView);
}while(cursor.moveToNext());
}
oiTotalPayment.setText(String.format("%.2f",totalPayment));
}
});
t.start();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Только начал изучать андроид, хочу написать библиотеку для получения всех view на активностиНе могу нащупать точку входа
Есть события (events) на которые я подписываюсь (данные события делают запрос на сторонний сервис и получают информацию)После получения информации,...
Ajax запросы отрабатывают верно: получение статуса команды, удаление команды, постановка в очередьНе могу решить проблему, при клике осуществляет...
Я только начинаю изучать JS, возникла проблема, есть рабочий код, но сильно громоздкий и большой, помогите его упростить или уменьшить