小编Mar*_*rio的帖子

如何在片段转换中正确添加多个片段?

我最近在这里问了一个关于片段的问题:

 http://stackoverflow.com/questions/12443312/listview-not-populating-or-webview-taking-up-entire-screen
Run Code Online (Sandbox Code Playgroud)

在经历了很多混乱后,我发现了问题所在,但经过更多的愚弄和研究(其中正确的代码看起来与我的相同),我无法弄清楚我的问题是什么.

创建完所有内容后,我发现只有最后一个片段添加到事务中才可见.这是我添加它们的代码:

    FragmentManager manager = getFragmentManager();
    FragmentTransaction trans = manager.beginTransaction();
    UrlListFragment urlfragment = new UrlListFragment();
    MyWebFragment webfragment = new MyWebFragment();
    trans.add(R.id.fragment_container, urlfragment, "my_url_fragment");
    trans.add(R.id.fragment_container, webfragment, "my_web_fragment");
    trans.commit();
Run Code Online (Sandbox Code Playgroud)

这是我的主要xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者可以做些什么,以便正确添加两个片段并且可以正确看到?

layout transactions views fragment

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

MyContentProvider.onCreate()没有被调用?

未正确调用扩展ContentProvider的userDatabase的onCreate

这是我的一些userBatabase代码:

public class userDatabase extends ContentProvider {

    private MainDatabaseHelper mOpenHelper;

    public userDatabase(){}

    public static final class MainDatabaseHelper extends SQLiteOpenHelper{...}

    @Override
    public boolean onCreate() {
        mOpenHelper = new MainDatabaseHelper(getContext());     
        return true;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        long id = mOpenHelper.getWritableDatabase().insert("Users", null, values);
        return Uri.withAppendedPath(CONTENT_URI, "" + id);
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

在我的主要活动中,我打电话:

userDatabase cpDatabase = new userDatabase();
Run Code Online (Sandbox Code Playgroud)

但是当我试着打电话的时候 cpDatabase.insert(userDatabase.CONTENT_URI, values);

mOpenHelper.getWritableDatabase().insert("Users", null, values);调用时,插入内部的所有内容都会崩溃.

我发现这mOpenHelper.getWritableDatabase()是问题,因为它甚至不会自己运行,然后我发现这是因为mOpenHelper为null.

我在构造函数中实例化mOpenHelper,所以我认为它没有运行.一些日志消息证实了这一点,当我调用userDatabase cpDatabase = new userDatabase();我的日志消息显示userDatabase()构造函数正常运行,但onCreate从未运行,因此mOpenHelper从未实例化.

(注意:有了这些日志消息,我注意到当我的应用程序启动时,我的userDatabase的构造函数和onCreate被调用.我不知道为什么或在哪里.我不明白为什么在我尝试创建实例之前运行它.即使它被运行,mOpenHelper仍然没有初始化,当我创建一个实例时,构造函数运行但是onCreate没有.)

可能会发生什么,我怎样才能让我的onCreate运行?

java database android android-contentprovider sqliteopenhelper

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