我正在为平板电脑开发Android应用,而不是使用兼容性库.
只有一个Activity,它使用带有3个选项卡的ActionBar.在TabListener中,我使用setContentView加载特定于该选项卡的布局,然后将相关片段添加到其框架中.这几乎与我想要的完全一样,除非你在选项卡之间切换得足够快,应用程序就会崩溃.
我使用三星Galaxy Tab作为我的调试设备,切换标签非常快.以正常速度,我可以在它们之间来回切换,页面立即加载.问题是当我在选项卡之间进行超级切换时.
起初我得到了一个
IllegalStateException: Fragment not added
如下所示:http: //code.google.com/p/android/issues/detail? id = 17029根据onTabUnselected中使用try/catch块的建议,我使应用程序更加强大,但导致手头的问题:
IllegalArgumentException: No view found for id 0x... for fragment ...
我没有在网上找到任何其他有同样问题的案例,所以我担心我可能会做一些不受支持的事情.同样,我想要做的是在一个Activity中使用3种不同的布局 - 当你单击一个选项卡时,监听器将调用setContentView来更改布局,然后添加片段.除非您开始在标签之间积极切换,否则它的工作效果非常好
我从以下方面得到了这个想法:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html 而不是TabListener保留对一个片段的引用,我有一系列的.此外,我没有使用附加/分离,因为这些只是在API 13中添加.
我的理论是setContentView还没有完成创建视图,这就是FragmentTransaction无法添加它们的原因,或者当选择另一个选项卡并调用setContentView时,为一个选项卡添加片段,从而破坏另一组视图.
我试图破解一些东西来减慢标签切换速度,但没有到达任何地方.
这是我的TabListener的代码:
private class BTabListener<T extends Fragment> implements ActionBar.TabListener{
    private int mLayout;
    private Fragment[] mFrags;
    private TabData mTabData;
    private Activity mAct;
    private boolean mNoNewFrags;
    public BTabListener(Activity act, int layout, TabData td, boolean frags){
        mLayout = layout;
        mTabData = …我的平板电脑应用程序针对不同的UI模式有一个活动和几个不同的布局 - 这些布局中的每一个都使用<fragment>标签来填充具有不同片段的UI(在Activity切换模式中调用setContentView).
如何以这种方式加载新片段时,如何使用过渡动画淡入?现在,在片段加载时,在模式之间切换会产生闪烁效果.
谢谢!
android android-layout android-fragments android-3.0-honeycomb
甚至有一个术语吗?它完全逃脱了我.
例:
TableLayout tableLayout = new TableLayout(context){
    @Override
    protected void onDetachedFromWindow(){
        super.onDetachedFromWindow();
        getRidOfDialog();
    }
};
在我的Java应用程序中,有一个Socket打开,正在从其InputStream读取数据.
在最佳条件下,每个进入的数据包都会导致调用read()返回其应用程序层数据.这就是我想要获得的 - 每个数据包一个'消息' .
但是,有可能根据getReceiveBufferSize()返回的内容在套接字中缓冲数据.如果发生这种情况并且从中读取流,则可能存在来自多个数据包的数据.
是否有另一种从单个数据包中获取数据的方法,或者这是否违反了抽象层?或者,是否可以为数据添加到缓冲区时设置某种分隔符?或者是平台级别的东西是无法完成的?
以下是一些示例代码,用于演示我正在做的事情:
import java.io.InputStream;
import java.net.Socket;
public class Belnets {
public Belnets() {
    try{
        Socket s = new Socket("address", 23);
        System.out.println("platform will buffer this much: "+s.getReceiveBufferSize());
        InputStream sin = s.getInputStream();
        byte[] data = new byte[1024];
        int c;
        while(true){
            c = sin.read(data);
            for(int i=0; i<c; i++){
                System.out.print((char)data[i]);
            }
            System.out.println("=END OF READ=");
            //if you dont do this, read() seems to return once for each packet as this loop 
            //appears to be running fast enough …如果您有一个如下所示的Java Singleton:
public class MySingleton {
private static MySingleton instance;
private int member;
public static MySingleton getInstance(){
    if(instance==null){
        instance = new MySingleton();
    }
    return instance;
}
private MySingleton(){
    //empty private constructor
}
public int getMemberA(){
    return member;
}
public int getMemberB(){
    return instance.member;
}
}
... getMemberA和getMemberB之间有区别吗?也就是说,访问会员instance.xxx和刚刚之间存在差异xxx吗?
注意:我知道使用Singleton模式的优缺点!