小编Nic*_*ckL的帖子

Android FragmentManager BackStackRecord.run抛出NullPointerException

使用Fragments时,我有时会遇到以下异常:

FATAL EXCEPTION: main
java.lang.NullPointerException
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:591)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4745)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

当调用from时,当它尝试从管理器中删除片段时run(),会发生异常.BackStackRecordexecPendingTransactions()

case OP_REMOVE: {
  Fragment f = op.fragment;
  f.mNextAnim = op.exitAnim; <----
  mManager.removeFragment(f, mTransition, mTransitionStyle);
}
break;
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚究竟是什么导致了这个?我认为这与拆除碎片时未正确清理的碎片堆叠有关.

java android android-fragments fragmentmanager

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

是否有一种简单的方法可以在Java中获取特定类的所有对象实例

目前我正在使用Java代理来组装内存统计信息.在instrumentation API的帮助下,我可以获得类(并操纵它们).使用普通Java,我可以估计每个对象使用的资源.到现在为止还挺好.

我现在面临的问题是"如何掌握特定类的每个Object实例".我可以进行字节代码操作以获取对象实例,但我希望有另一个我不知道的API,帮助我实现我的目标,没有这么大的侵入性步骤.最后,应将性能影响保持在最低限度.有任何想法吗?

java profiling jvm

17
推荐指数
2
解决办法
1万
查看次数

Android:从静态Handler类调用非静态方法

鉴于此代码:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

public static final int MESSAGE_NOT_CONNECTED = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}

// -------------------------------------------------
public final void setStatus(int Rid) {
    final ActionBar actionBar = getActionBar();
    actionBar.setSubtitle(Rid);
}

// -------------------------------------------------
static Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case MESSAGE_NOT_CONNECTED:
            setStatus(R.string.title_not_connected);
            break;
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:无法对非静态方法setStatus(int)进行静态引用...

这是有道理的,因为setStatus()中的getActionBar()是一个非静态方法.

由于警告,我使Handler类保持静态:此Handler类应该是静态的,否则可能会发生泄漏.

问题:如何从静态处理程序中正确访问setStatus()方法?

编辑:新的处理程序代码是答案.

static class hHandler extends Handler {
    private final WeakReference<MainActivity> …
Run Code Online (Sandbox Code Playgroud)

android handler android-actionbar

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

覆盖二维向量类中的__mul__以保持传播性

我已经定义了以下类:

class Point(object):

    def __repr__(self):
        return "("+str(self.x)+","+str(self.y)+")"

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, point):
        return Point(self.x+point.x,self.y+point.y)

    def __sub__(self, point):
        return Point(self.x-point.x,self.y-point.y)

    def __mul__(self, num):
         return Point(num*self.x,num*self.y)

    def length(self):
        return (self.x**2 + self.y**2)**.5
Run Code Online (Sandbox Code Playgroud)

以下代码有效:

x = Point(1,2)
y = Point(1,3)
print x+y
print (y+x)
print (x-y)
print (y-x)
print y*3
Run Code Online (Sandbox Code Playgroud)

输出:

(2,5)
(2,5)
(0,-1)
(0,1)
(3,9)
Run Code Online (Sandbox Code Playgroud)

但这不是:

print 3*y
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

----> 1 print 3*y
TypeError: unsupported operand type(s) for *: 'int' and 'Point'
Run Code Online (Sandbox Code Playgroud)

这是因为点类被输入到int mul …

python

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

更改JavaFX WebView的默认字体

我使用嵌入在JPanel中的Java FX2.2 WebView来显示网页.这种方法效果很好,除了我不喜欢的默认字体.它看起来非常大胆/圆润/消除锯齿/模糊.

在此输入图像描述

左侧是我的Chrome浏览器中的文本,位于FX浏览器的右侧.

它似乎使用"System Regular"字体作为默认字体,Font.getDefault()返回此字体.我尝试用反射更改它,但浏览器仍然使用相同的字体.此外,我看着WebView.setFontScale()WebView.setFontSmoothingType(),第一只改变大小,而后者只具有第二字体平滑型比默认的更糟糕.

我看了Safari,就像FX WebView一样,基于WebKit,这个浏览器可以选择更改默认字体(我想大多数浏览器都有这个选项).

有没有人知道如何更改Java FX WebView的默认字体?

编辑:在这里提出功能请求:https://bugs.openjdk.java.net/browse/JDK-8090968

java webkit javafx

5
推荐指数
2
解决办法
4352
查看次数