Я пытаюсь получить массив из одного класса задачи async в другой класс фрагмента, но получаю исключение с нулевым указателем. Я видел много ответов здесь, но никто, что я видел, фактически не ответил на этот вопрос.Android, передающий значение массива из задачи async в другой класс
Я попытался вернуть значение из задачи класса async, и я попытался сделать массив статическим, но я не имел успеха.
Эти классы (я выделил, где я пытаюсь получить значение из и довести его до):
public class DemoPreviewSongFragment extends DemoFragmentBase {
// The DynamoDB object mapper for accessing DynamoDB.
private final DynamoDBMapper mapper;
public DemoPreviewSongFragment() {
mapper = AWSMobileClient.defaultMobileClient().getDynamoDBMapper();
}
SongPreviewCardsDataAdapter mCardAdapter;
com.wenchao.cardstack.CardStack mCardStack;
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_preview_song, container, false);
mCardStack = (CardStack)view.findViewById(R.id.cardstackcontainer);
mCardStack.setContentResource(R.layout.song_preview_card_layout);
mCardStack.setStackMargin(20);
new getSongsInCategory().execute();
/////////// WHEN TRYING TO REFERENCE THE STATIC ARRAY RESULT HERE I GET A NULL /////////// POINTER. I NEED THE ARRAY HERE SO I CAN PUT IT IN THE ADAPTER.
mCardAdapter = new SongPreviewCardsDataAdapter(getActivity().getApplicationContext(),0);
mCardAdapter.add("test1");
mCardStack.setAdapter(mCardAdapter);
return view;
}
//////////////////// THIS IS THE ARRAY I AM TRYING TO PASS /////////////////////
public static PaginatedQueryList<SongDatabaseMappingAdapter> result;
public class getSongsInCategory extends AsyncTask {
@Override
protected Object doInBackground(Object[] params) {
SongDatabaseMappingAdapter songs = new SongDatabaseMappingAdapter();
songs.setCategory("Rap");
String userRatingQueryString = "5";
Condition rangeKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ)
.withAttributeValueList(new AttributeValue().withN(userRatingQueryString));
DynamoDBQueryExpression queryExpression = new DynamoDBQueryExpression()
.withHashKeyValues(songs)
.withIndexName("Category-UserRating-index")
.withRangeKeyCondition("UserRating", rangeKeyCondition)
.withConsistentRead(false);
result = mapper.query(SongDatabaseMappingAdapter.class, queryExpression);
return result;
}
}
Я не уверен, что я здесь делаю неправильно, почему это пустой указатель когда он должен быть глобальным (статическим) массивом? Есть ли лучший способ сделать это?
Спасибо за вашу помощь