gpt4 book ai didi

Android:无法从 fragment 更新 Activity 中的 TextView 文本

转载 作者:行者123 更新时间:2023-11-29 01:05:59 26 4
gpt4 key购买 nike

我有一个 fragment ,为了与父 Activity 通信(请参阅下一个代码块),我使用了一个接口(interface)。我包括了一个基本示例,但问题是当我从 Spotify OnPlaybackEvent 调用函数 updateTextView() 时,我的 TextView 没有更新 Activity ,如果我通过单击按钮调用它工作的相同函数。我已尝试使用 Handlers 和 runonuithread,但似乎没有任何效果。

这是我的 fragment :

public class PlayerFragment extends Fragment implements SpotifyPlayer.NotificationCallback, ConnectionStateCallback {

public ImageView playButton;
public TrackOperations trackOperationsCallback;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

rootView = inflater.inflate(R.layout.player_fragment, container, false);

playButton = (ImageView) rootView.findViewById(R.id.playButton);


playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//THIS WORKS!
trackOperationsCallback.updateTextView();
}
});

return rootView;
}

@Override
public void onPlaybackEvent(PlayerEvent playerEvent) {
if(playerEvent.equals(kSpPlaybackNotifyTrackDelivered)){
//THIS IS PRINTED WHEN A SONG ENDS
Log.d(spoty.TAG, "Player: Event " + playerEvent);

//BUT THIS DONT WORK
trackOperationsCallback.updateTextView();
}
}

public interface TrackOperations {
public void updateTextView();
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);

try {
trackOperationsCallback = (TrackOperations) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement TrackOperations");
}
}

}

这是我的父 Activity :

 public class QueueActivity extends Activity implements PlayerFragment.TrackOperations {

private TextView queueSong;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

queueSong = (TextView) findViewById(R.id.queueSong);
}

@Override
public void updateTextView(){
//THIS IS PRINTED IN BOTH CASES
Log.d(spoty.TAG, "Called!");

//THIS WORKS IF IS CALLED FROM THE BUTTON CLICK OF THE FRAGMENT
//BUT DONT WORK WHEN CALLED FROM THE EVENT IN FRAGMENT
queueSong.setText("ANY RANDOM TEXT");
}
}

我有好几天都在为此苦苦挣扎,所以任何建议都将不胜感激。提前致谢。

最佳答案

这可能不是最好的方法,但每当我遇到数据传输问题时,我都会使用 SharedPreferences 解决它,包括 fragment 到 fragment 的通信。这一定会解决你的问题

关于Android:无法从 fragment 更新 Activity 中的 TextView 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47185305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com