package com.tencent.tws.pluginhost.plugindebug;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;
import com.tencent.tws.assistant.support.v4.app.Fragment;
import com.tencent.tws.assistant.support.v4.app.FragmentTransaction;
import com.tencent.tws.assistant.support.v4.app.TwsFragmentActivity;
import com.tencent.tws.pluginhost.R;
import com.tws.plugin.core.PluginLoader;
import com.tws.plugin.core.annotation.PluginContainer;
/**
* @author yongchen
*/
public class PluginTwsFragmentActivity extends TwsFragmentActivity implements PluginContainer {
public static final String FRAGMENT_ID_IN_PLUGIN = "PluginDispatcher.fragmentId";
public static final String FRAGMENT_PLUGIN_ID = "PluginDispatcher.fragment.PluginId";
private static final String LOG_TAG = PluginFragmentActivity.class.getSimpleName();
private String mPluginID = "";
private String mFragmentID = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plugin_fragment);
mPluginID = getIntent().getStringExtra(FRAGMENT_PLUGIN_ID);
String classId = getIntent().getStringExtra(FRAGMENT_ID_IN_PLUGIN);
if (classId == null && savedInstanceState != null) {
classId = savedInstanceState.getString(FRAGMENT_ID_IN_PLUGIN);
}
loadPluginFragment(classId);
}
@Override
public void setPluginId(String id) {
mPluginID = id;
}
@Override
public String getPluginId() {
return mPluginID;
}
private void loadPluginFragment(String classId) {
try {
if (classId == null) {
Toast.makeText(this, "缺少参数:PluginDispatcher.fragmentId", Toast.LENGTH_SHORT).show();
mFragmentID = null;
return;
}
Log.d(LOG_TAG, "loadPluginFragment, classId is " + classId);
mFragmentID = classId;
@SuppressWarnings("rawtypes")
Class clazz = PluginLoader.loadPluginFragmentClassById(classId);
Fragment fragment = (Fragment) clazz.newInstance();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, fragment).commit();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (outState != null) {
outState.remove(FRAGMENTS_TAG);
}
if (!TextUtils.isEmpty(mFragmentID)) {
outState.putString(FRAGMENT_ID_IN_PLUGIN, mFragmentID);
}
}
}