0
В настоящее время я сталкиваюсь с этой ошибкой. Я пробовал много способов попробовать и решить это, но безрезультатно. Пожалуйста, укажите мне, где пошло не так, и как я могу это решить. Благодарю.
Сообщение об ошибке:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Вот класс Java:
package com.uploadtodatabasevts;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import com.amazonaws.auth.CognitoCachingCredentialsProvider;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBQueryExpression;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.PaginatedQueryList;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import java.util.ArrayList;
import java.util.List;
public class Advisor extends AppCompatActivity implements AdapterView.OnItemClickListener {
List<Outfit> outfitList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_advisor);
Intent intent = getIntent();
final String results = intent.getStringExtra("results");
final TextView itemOneID = (TextView)findViewById(R.id.txtViewItemOneID);
final TextView itemOneDetail = (TextView)findViewById(R.id.txtViewItemOneDetail);
final TextView itemOnePrice = (TextView)findViewById(R.id.txtViewItemOnePrice);
ListView listView = (ListView)findViewById(R.id.listView);
outfitList = new ArrayList<Outfit>();
Adapter adapter = new Adapter(this, outfitList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
final AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);
final DynamoDBMapper mapper = new DynamoDBMapper(ddbClient);
// final Outfit outfitToFind = new Outfit();
// outfitToFind.setItemOne_id("VT0056");
Runnable runnable = new Runnable() {
public void run() {
//DynamoDB calls go here
Outfit selectedOutfit = mapper.load(Outfit.class, "22");
selectedOutfit.getItemOne_id();
selectedOutfit.getItemOne_detail();
selectedOutfit.getItemOne_price();
itemOneID.setText(selectedOutfit.getItemOne_id());
itemOneDetail.setText(selectedOutfit.getItemOne_detail());
itemOnePrice.setText(selectedOutfit.getItemOne_price());
/*
DynamoDBQueryExpression queryExpression = new DynamoDBQueryExpression()
.withHashKeyValues(outfitToFind)
.withConsistentRead(false);
PaginatedQueryList<Outfit> result = mapper.query(Outfit.class, queryExpression);
result.
*/
}
};
Thread mythread = new Thread(runnable);
mythread.start();
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
}
}
Спасибо! Это решило мою проблему, но в настоящее время у меня возникают проблемы с передачей данных с первой страницы на эту страницу. Поскольку в настоящее время я использую qr-сканирование, я буду сканировать идентификатор элемента и передать его на эту страницу для извлечения данных. Я изменил mapper.load (Outfit.class, «22») на mapper.load (Outfit.class, результаты, но я столкнулся с этой ошибкой – SusanooJK
com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMappingException: нулевой ключ найден для public java.lang.String com.uploadtodatabasevts.Tables.Item.getItem_id() – SusanooJK
nvm Я решил ошибку. Я забыл добавить в одну строку в другом классе. – SusanooJK