Search in sources :

Example 6 with FragmentManager

use of android.app.FragmentManager in project AndroidDynamicLoader by mmin18.

the class MainActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    int error = 0;
    // must be load at the first start
    do {
        site = intent.getParcelableExtra("_site");
        if (site == null) {
            // #201
            error = 201;
            break;
        }
        fragmentName = intent.getStringExtra("_fragment");
        if (TextUtils.isEmpty(fragmentName)) {
            // #202
            error = 202;
            break;
        }
        String code = intent.getStringExtra("_code");
        if (TextUtils.isEmpty(code)) {
            loaded = true;
            break;
        }
        file = site.getFile(code);
        if (file == null) {
            // #205
            error = 205;
            break;
        }
        classLoader = MyClassLoader.getClassLoader(site, file);
        loaded = classLoader != null;
        if (!loaded) {
            // #210
            error = 210;
            break;
        }
    } while (false);
    super.onCreate(savedInstanceState);
    rootView = new FrameLayout(this);
    rootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    rootView.setId(android.R.id.primary);
    setContentView(rootView);
    if (!loaded) {
        TextView text = new TextView(this);
        text.setText("无法载入页面" + (error == 0 ? "" : " #" + error));
        text.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER));
        rootView.addView(text);
        return;
    }
    // the fragment will be restored by framework
    if (savedInstanceState != null)
        return;
    Fragment fragment = null;
    try {
        fragment = (Fragment) getClassLoader().loadClass(fragmentName).newInstance();
    } catch (Exception e) {
        loaded = false;
        classLoader = null;
        // #211
        error = 211;
        TextView text = new TextView(this);
        text.setText("无法载入页面 #" + error);
        text.append("\n" + e);
        text.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER));
        rootView.addView(text);
        return;
    }
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(android.R.id.primary, fragment);
    ft.commit();
}
Also used : ViewGroup(android.view.ViewGroup) Intent(android.content.Intent) Fragment(android.app.Fragment) FragmentManager(android.app.FragmentManager) FragmentTransaction(android.app.FragmentTransaction) FrameLayout(android.widget.FrameLayout) TextView(android.widget.TextView)

Example 7 with FragmentManager

use of android.app.FragmentManager in project AndroidDynamicLoader by mmin18.

the class FragmentDeveloper method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FrameLayout rootView = new FrameLayout(this);
    rootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    rootView.setId(android.R.id.primary);
    setContentView(rootView);
    if (savedInstanceState == null) {
        Fragment f = new SampleFragment();
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.add(android.R.id.primary, f);
        ft.commit();
    }
}
Also used : FragmentManager(android.app.FragmentManager) SampleFragment(com.dianping.example.fragment.SampleFragment) FragmentTransaction(android.app.FragmentTransaction) ViewGroup(android.view.ViewGroup) FrameLayout(android.widget.FrameLayout) Fragment(android.app.Fragment) SampleFragment(com.dianping.example.fragment.SampleFragment)

Example 8 with FragmentManager

use of android.app.FragmentManager in project AndroidDynamicLoader by mmin18.

the class FragmentLoader method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    if ("com.dianping.intent.action.LOAD_FRAGMENT".equals(getIntent().getAction())) {
        // we need to setup environment before super.onCreate
        try {
            String path = getIntent().getStringExtra("path");
            InputStream ins = MyApplication.instance().getAssets().open(path);
            byte[] bytes = new byte[ins.available()];
            ins.read(bytes);
            ins.close();
            File f = new File(MyApplication.instance().getFilesDir(), "dex");
            f.mkdir();
            f = new File(f, "FL_" + Integer.toHexString(path.hashCode()) + ".apk");
            FileOutputStream fos = new FileOutputStream(f);
            fos.write(bytes);
            fos.close();
            File fo = new File(MyApplication.instance().getFilesDir(), "dexout");
            fo.mkdir();
            DexClassLoader dcl = new DexClassLoader(f.getAbsolutePath(), fo.getAbsolutePath(), null, super.getClassLoader());
            cl = dcl;
            try {
                AssetManager am = (AssetManager) AssetManager.class.newInstance();
                am.getClass().getMethod("addAssetPath", String.class).invoke(am, f.getAbsolutePath());
                asm = am;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            Resources superRes = super.getResources();
            res = new Resources(asm, superRes.getDisplayMetrics(), superRes.getConfiguration());
            thm = res.newTheme();
            thm.setTo(super.getTheme());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    super.onCreate(savedInstanceState);
    FrameLayout rootView = new FrameLayout(this);
    rootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    rootView.setId(android.R.id.primary);
    setContentView(rootView);
    if (savedInstanceState != null)
        return;
    if ("com.dianping.intent.action.LOAD_FRAGMENT".equals(getIntent().getAction())) {
        try {
            String fragmentClass = getIntent().getStringExtra("class");
            Fragment f = (Fragment) getClassLoader().loadClass(fragmentClass).newInstance();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(android.R.id.primary, f);
            ft.commit();
        } catch (Exception e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
    } else {
        Fragment f = new ListApkFragment();
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.add(android.R.id.primary, f);
        ft.commit();
    }
}
Also used : AssetManager(android.content.res.AssetManager) InputStream(java.io.InputStream) ViewGroup(android.view.ViewGroup) DexClassLoader(dalvik.system.DexClassLoader) Fragment(android.app.Fragment) FragmentManager(android.app.FragmentManager) FragmentTransaction(android.app.FragmentTransaction) FileOutputStream(java.io.FileOutputStream) FrameLayout(android.widget.FrameLayout) Resources(android.content.res.Resources) File(java.io.File)

Example 9 with FragmentManager

use of android.app.FragmentManager in project qksms by moezbhatti.

the class MainActivity method beginMmsSetup.

private void beginMmsSetup() {
    if (!mPrefs.getBoolean(MMS_SETUP_DONT_ASK_AGAIN, false) && TextUtils.isEmpty(mPrefs.getString(SettingsFragment.MMSC_URL, "")) && TextUtils.isEmpty(mPrefs.getString(SettingsFragment.MMS_PROXY, "")) && TextUtils.isEmpty(mPrefs.getString(SettingsFragment.MMS_PORT, ""))) {
        // Launch the MMS setup fragment here. This is a series of dialogs that will guide the
        // user through the MMS setup process.
        FragmentManager manager = getFragmentManager();
        if (manager.findFragmentByTag(MMSSetupFragment.TAG) == null) {
            MMSSetupFragment f = new MMSSetupFragment();
            Bundle args = new Bundle();
            args.putBoolean(MMSSetupFragment.ARG_ASK_FIRST, true);
            args.putString(MMSSetupFragment.ARG_DONT_ASK_AGAIN_PREF, MMS_SETUP_DONT_ASK_AGAIN);
            f.setArguments(args);
            getFragmentManager().beginTransaction().add(f, MMSSetupFragment.TAG).commit();
        }
    }
}
Also used : FragmentManager(android.app.FragmentManager) Bundle(android.os.Bundle) MMSSetupFragment(com.moez.QKSMS.ui.dialog.mms.MMSSetupFragment)

Example 10 with FragmentManager

use of android.app.FragmentManager in project qksms by moezbhatti.

the class ComposeActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle(R.string.title_compose);
    FragmentManager fm = getFragmentManager();
    mComposeFragment = (ComposeFragment) fm.findFragmentByTag(ComposeFragment.TAG);
    if (mComposeFragment == null) {
        mComposeFragment = new ComposeFragment();
    }
    fm.beginTransaction().replace(R.id.content_frame, mComposeFragment, ComposeFragment.TAG).commit();
}
Also used : FragmentManager(android.app.FragmentManager)

Aggregations

FragmentManager (android.app.FragmentManager)153 FragmentTransaction (android.app.FragmentTransaction)64 Fragment (android.app.Fragment)34 DocumentInfo (com.android.documentsui.model.DocumentInfo)20 Bundle (android.os.Bundle)19 DialogFragment (android.app.DialogFragment)15 RootInfo (com.android.documentsui.model.RootInfo)15 ActionBar (android.support.v7.app.ActionBar)12 Intent (android.content.Intent)11 File (java.io.File)6 MediaRouter (android.media.MediaRouter)5 StorageManager (android.os.storage.StorageManager)5 VolumeInfo (android.os.storage.VolumeInfo)5 MenuItem (android.view.MenuItem)5 IOException (java.io.IOException)5 Uri (android.net.Uri)4 Toolbar (android.support.v7.widget.Toolbar)4 View (android.view.View)4 DialogInterface (android.content.DialogInterface)3 ViewGroup (android.view.ViewGroup)3