当我在Android Studio 1.0中尝试生成签名APK向导时,我遇到了错误。
Error: This class should provide a default constructor (a public constructor with no arguments) (com.ex.Tab1_2_1) [Instantiatable]
有我的代码。
它适用于Eclipse,我想知道为什么它在Android Studio中不起作用。
public class Tab1_2_1 extends Fragment{
Context mContext;
WebView mWebView;
View mView;
public Tab1_2_1(Context context)
{
mContext = context;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState)
{
mView = inflater.inflate(R.layout.webview, null);
return mView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
mWebView = (WebView)mView.findViewById(R.id.webview);
mWebView.loadUrl("file:///android_asset/tab1_2/tab1_2_1.html");
mWebView.getSettings().setJavaScriptEnabled(true);
}
}
度过愉快的一天。
答案 0 :(得分:1)
来自官方文件Fragment
Fragment的所有子类都必须包含公共无参数构造函数。框架通常会在需要时重新实例化一个片段类,特别是在状态恢复期间,并且需要能够找到此构造函数来实例化它。如果无参数构造函数不可用,则在状态恢复期间的某些情况下将发生运行时异常。
您无需将上下文传递给它。您始终可以使用getActivity()方法
获取上下文答案 1 :(得分:0)
是的,Fragment
的子类需要有一个空的构造函数。你应该删除
public Tab1_2_1(Context context)
{
mContext = context;
}
另外,拥有一个只是提供上下文对象的构造函数根本没用,因为Fragment
具有getActivity
方法,该方法返回主机Fragment