Ich versuche, ein Array von einer asynchronen Aufgabenklasse zu einer anderen Fragmentklasse zu bekommen, aber ich bekomme eine Nullzeiger Ausnahme. Ich habe hier viele Antworten gesehen, aber keine, die ich gesehen habe, hat diese Frage beantwortet.Android übergeben Wert von Array von Async-Aufgabe zu einer anderen Klasse
Ich habe versucht, den Wert aus der Async-Klasse Aufgabe und ich versuchte, das Array statisch zu machen, aber ich hatte keinen Erfolg.
Dies sind die Klassen (ich habe hervorgehoben, wo ich versuche, den Wert von zu bekommen und bringen sie zu):
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;
}
}
Ich bin nicht sicher, was ich falsch hier, warum das ein Null-Zeiger ist tue Wann sollte es ein globales (statisches) Array sein? Gibt es einen besseren Weg, dies zu tun?
Danke für Ihre Hilfe