小编nex*_*006的帖子

在Rotate上的ListFragment"尚未创建的内容视图"

我有一个扩展的ListFragment,这个onViewCreated()

public void onViewCreated(View v,Bundle savedInstanceState) {
    super.onViewCreated(v, savedInstanceState);
    mListener.onFragmentAction(0x000A);
    if (mAdapter != null) {
        getListView().setAdapter(mAdapter);
    }
}
Run Code Online (Sandbox Code Playgroud)

mListener.onFragmentAction调用main活动来附加一些侦听器并将适配器发送到片段的listView(logFrag是活动的引用MyListFragment)

public void populateLogFrag() {
//line 225  logFrag.getListView().setOnItemLongClickListener(myEventListener);
            logFrag.getListView().setOnItemClickListener(myEventListener);
            refreshLogAdapter(provideLogAdapter());
}
Run Code Online (Sandbox Code Playgroud)

应用程序加载正常,但在配置更改(设备旋转)后,我得到以下堆栈跟踪:

11-22 14:58:24.336: E/AndroidRuntime(22261): Caused by: java.lang.IllegalStateException: Content view not yet created
11-22 14:58:24.336: E/AndroidRuntime(22261):    at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at com.berrmal.timetracker.MainActivity.populateLogFrag(MainActivity.java:225)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at com.berrmal.timetracker.MainActivity.onFragmentAction(MainActivity.java:282)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at com.berrmal.timetracker.MyListFragment.onViewCreated(MyListFragment.java:23)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么还没有创建ListView,因为我在片段的onCreateView方法已经返回之后以及在onViewCreated()期间调用它.我发现了一个或两个相关标题的线程,但解决方案似乎并不适用于此.

android android-listfragment

10
推荐指数
1
解决办法
7354
查看次数

DASM汇编器中的ASCII至C64屏幕代码

我正在通过C64仿真器学习6502 micro的装配。当前正在尝试将字符串输出到屏幕。这是我的代码:

    processor 6502
    org $1000

    ldx #$00    ;using x register as column counter
print:
    lda message,x;load a with x bit from message
    sta $0400,x ;store this bit in row 0 col 0 address
    inx         ;x++
    cpx #$05    ;is x >= 5?
    bne print   ;if not x >= 5, loop again
    rts         ;return from program


message dc "HELLO"
hexmsg dc $08,$05,$0c,$0c,$0f
Run Code Online (Sandbox Code Playgroud)

因为我的编辑器(胜利10上的notepad ++)使用类似ascii的字符代码,所以"HELLO"输入message是48 45 4C 4C 4F。这将在屏幕的左上角提供以下输出: 在此处输入图片说明

我想这是正确的,请看这里的commodore屏幕代码表。

如果将第6行更改为,lda hexmsg,x那么我将得到确切的字眼HELLO。 …

string assembly 6502 commodore

4
推荐指数
2
解决办法
1026
查看次数

通过清单注册时广播接收器不工作

尝试在Android应用程序的清单中设置简单的广播接收器,以检测手机何时振铃并启动服务.它在呼叫进入时没有收到广播,没有日志输出,nada.我尝试了android.intent.action.PHONE_STATE操作以及清单中的TelephonyManager.ACTION_PHONE_STATE_CHANGED,对我来说都没有做任何事情.

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <receiver
        android:name="com.berrmal.calllog.CallReceiver"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

和接收者:

public class CallReceiver extends BroadcastReceiver {

public void onReceive(Context c, Intent i) {
    Log.d("callreceiver", "onReceive()");
    String state = i.getStringExtra(TelephonyManager.EXTRA_STATE);
    Log.d("callreceiver", state);
    if (state.equals(TelephonyManager.CALL_STATE_RINGING)) {
        Intent serviceStartIntent = new Intent(c, RecordService.class);
        serviceStartIntent.putExtra("number", i.getStringExtra("EXTRA_INCOMING_NUMBER"));
        c.startService(serviceStartIntent);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我环顾四周,在这个帖子中:来电广播接收器不工作(Android 4.1)他们说,从Android 4.1开始,系统不再向没有活动的应用组件发送广播......这是真的吗?

android android-intent telephonymanager

3
推荐指数
1
解决办法
7301
查看次数

Java拷贝多维数组,随机错误

我一直在调试我的Game of Life的实现,我的主要问题看起来就像是我使用数组的方式.

public boolean[][] oldState;
public boolean[][] newState;
private boolean gameState = true;

public LifeBoard(Seed seed) {
    oldState = seed.getSeed();
    newState = new boolean[oldState.length][oldState[0].length];
    run();
}

public void run() {
    //debug code to run for x generations
    for (int i = 0; i < 5; i++) {
        BoardPrinter.print(oldState);
        evaluateCells();
        oldState = newState;        
    }
    BoardPrinter.print(oldState);
    System.out.println("game over");
}
Run Code Online (Sandbox Code Playgroud)

Seed的boolean [] []为5x5网格,除中间行的3个水平中间单元外全部为假(死)

00000
00000
0+++0
00000
00000
Run Code Online (Sandbox Code Playgroud)

evaluateCells()查看网格中的每个单元格,查看它周围的8个单元格,对它们进行计数,并根据邻居数量将新值写入newState.

应该发生什么:使用oldState计算newState,将newState复制到oldState,然后返回newState,再根据新的oldState写入每个单元格.

真正发生了什么:第一代正常工作,但之后结果越来越奇怪,它评估单元格是假的,我知道是真的,等等.问题似乎是我复制数组的方式.

如果我初始化第3个空白数组blankState [] [] = new boolean [5] [5]; 并且在运行循环期间说:

public void …
Run Code Online (Sandbox Code Playgroud)

java arrays

1
推荐指数
1
解决办法
89
查看次数