私はAndroidが初めてです。別のクラスからArrayListにアクセスしていますが、クラスにアクセスする際にArrayListのサイズがゼロになっています。メインクラスでは、配列リストのサイズが正の値を示します。なぜ私はクラスにアクセスする際にサイズがゼロになっているのかわかりません。私のコードで間違いがないかチェックしてください。別のクラスからのアクセス時にArrayListサイズをゼロにする
Tab3Tracksクラス
public class Tab3Tracks extends ListFragment {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
private ArrayList<String> trackslist = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab3tracks, container, false);
final String trackid = MediaStore.Audio.Media._ID;
final String trackno = MediaStore.Audio.Media.TRACK;
final String trackname = MediaStore.Audio.Media.TITLE;
final String path = MediaStore.Audio.Media.DATA;
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ContentResolver cr = getContext().getContentResolver();
final String[] projection = {trackid,trackno,trackname,path
};
final Cursor cursor = cr.query(uri,projection,null,null,null);
if (cursor!=null){
if(cursor.moveToFirst()){
do{
int trackIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
trackslist.add(cursor.getString(trackIndex));
}while(cursor.moveToNext());
}System.out.println(trackslist.size());
} cursor.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(),R.layout.playlist_item,R.id.songTitle,trackslist
);
setListAdapter(adapter);
return v;
}
public ArrayList<String> getList(){
return trackslist;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
int songIndex = position;
// Starting new intent
Intent in = new Intent(getActivity(), NowPlaying.class);
// Sending songIndex to PlayerActivity
in.putExtra("songIndex", songIndex);
startActivityForResult(in, 100);
}
}
NowPlayingクラス
public class NowPlaying extends AppCompatActivity {
public ArrayList<String> songsList = new ArrayList<String>();
public Tab3Tracks tab3tracks;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
// Getting all songs list
tab3tracks = new Tab3Tracks();
songsList= tab3tracks.getList();
System.out.println("songsListSize"+songsList.size());
System.out.println("List" +songsList);
}
これは明白ではありませんか? * Tab3Tracks *の新しいインスタンスをインスタンス化しているので、ライフサイクルメソッドがトリガーされていないので、ArrayListsは明らかに空です。 'Fragment'からデータにアクセスするには、' FragmentManager'を使用してフラグメントを取得し、対応するメソッドを呼び出す必要があります。たとえば、[この質問](http://stackoverflow.com/questions/10903077/calling-a-fragment-method-from-a-parent-activity)を参照してください。 – reVerse