이 질문은 이전에 묻지 만이 문제를 해결할 방법이 없기 때문에 Firebase RecyclerView 아래에서 내 애플리케이션에 Youtube API를 사용할 때 이 오류가 있는데 "변수 'youtuber'는 내부 클래스에서 액세스 할 수 있으며 마지막으로 선언해야합니다." 및 최종 키워드를 사용하지 않으면 실 거예요. 이로 인해 내 데이터베이스에서 데이터를 가져올 수 없습니다. 값이 문자열로 바뀌면 "Final"을 사용하여 해결할 수 있습니다. 누구든지 이걸 사용하면 문자열을 사용하지 않고도 문자열을 사용할 수 있습니다.내부 클래스의 "Final"을 사용하여 나중에 Android에서 문자열 값을 변경하지 않는 방법
전 세계 변수을 사용해 보았습니다.하지만 여기에서도 작동하지 않습니다. 도움을 받으십시오.
Android Studio를 사용하고 있습니다.
유튜브 활동 코드 :
public class YoutubeVideos extends AppCompatActivity {
private RecyclerView YouRecycler;
private DatabaseReference YDatabaseReference;
public static String DEVELOPER_KEY = "AIzaSyAEK3iPoxfItaHJsiuJ_693tuuQjkdGfQk";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.youtube_videos);
YDatabaseReference = FirebaseDatabase.getInstance().getReference().child("you");
YouRecycler = (RecyclerView)findViewById(R.id.Youtube_recycler);
YouRecycler.setHasFixedSize(true);
YouRecycler.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void onStart() {
super.onStart();
final FirebaseRecyclerAdapter<post2youtube, youtubeViewHolder> youFirebaseAdapter = new FirebaseRecyclerAdapter<post2youtube, youtubeViewHolder>(
post2youtube.class,
R.layout.youtube_card_view,
youtubeViewHolder.class,
YDatabaseReference
) {
@Override
protected void populateViewHolder(youtubeViewHolder yviewHolder, post2youtube ymodel, int position) {
yviewHolder.setYoutube(ymodel.getYoutube());
}
};
YouRecycler.setAdapter(youFirebaseAdapter);
}
public static class youtubeViewHolder extends RecyclerView.ViewHolder {
View youView;
public youtubeViewHolder(View itemView) {
super(itemView);
youView = itemView;
}
public void setYoutube(String youtuber){
YouTubeThumbnailView youPlay = (YouTubeThumbnailView)youView.findViewById(R.id.youtubler);
youPlay.initialize(DEVELOPER_KEY, new YouTubeThumbnailView.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, final YouTubeThumbnailLoader youTubeThumbnailLoader) {
youTubeThumbnailLoader.setVideo(youtuber);
youTubeThumbnailLoader.setOnThumbnailLoadedListener(new YouTubeThumbnailLoader.OnThumbnailLoadedListener() {
@Override
public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) {
youTubeThumbnailLoader.release();
}
@Override
public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {
}
});
}
@Override
public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
}
});
}
}
[가능한 최종 복제본 익명의 클래스에서 액세스 할 수 있습니까?] (https://stackoverflow.com/questions/4732544/why-are-only-final-variables-accessible-in-anonymous-class) –
@Pavneet_Singh 어떻게 그것이 중복입니까 !! , 나는 해결책을 찾으려고 노력하고있다 –
정적 컨텍스트에서 정적 변수를 사용할 수 있기 때문에 전역 변수를 정적으로 만들거나, oncreate로 초기화하거나, 전역 변수에 어떤 문제가 있는지 알지 못한다면, 그리고 중복 링크는 귀하의 문제에 대한 최적의 솔루션의 대부분을 포함합니다. –