我相信当重写getItemPosition(Object object)以重新排序页面时,FragmentStatePagerAdapter的行为不正确.
下面是一个简单的例子.在初始状态中,页面的顺序是{A,B,C}.在呼叫时toggleState(),页面的顺序变为{A,C,B}.通过覆盖getItemPosition(Object object),我们确保正在查看的当前页面(A,B或C)不会更改.
public static class TestPagerAdapter extends FragmentStatePagerAdapter {
private boolean mState = true;
public TestPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return 3;
}
private void toggleState() {
mState = !mState;
notifyDataSetChanged();
}
private String getLabel(int position) {
switch (position) {
case 0:
return "A";
case 1:
return mState ? "B" : "C";
default:
return mState ? "C" : "B";
}
}
@Override
public int getItemPosition(Object object) { …Run Code Online (Sandbox Code Playgroud) 我已成功使用Android TicTacToe应用程序转换为TicTacToe接收器应用程序(AppID"TicTacToe"),使用来自github上的TicTacToe示例的未修改代码.
接下来,我尝试使用我的个人接收器应用程序.我收到电子邮件几个小时让我知道我的设备已列入白名单并提供AppID.我将AppID放在第90行的GameActivity.java上(不是第91行,如说明中所述),我也将它放在tictactoe.html的第35行(指令中缺少此步骤,但我认为需要它).我还按照说明的"常见错误"部分中的所有步骤进行操作.
当我点击Android应用中的"开始"按钮时,Tic-Tac-Toe板出现在Android应用中,但Chromecast设备没有明显的反应.
这是LogCat:
07-28 00:13:47.776: W/StartSessionTask(10892): StartApplicationRequest failed with status: -4
07-28 00:13:47.826: E/ApplicationSession(10892): StartSessionTask failed with error: failed to start application: request failed
07-28 00:13:47.826: D/GameActivity(10892): start session failed: failed to start application: request failed
Run Code Online (Sandbox Code Playgroud)