【发布时间】:2015-02-15 12:52:41
【问题描述】:
我有一个应用程序已转移到新的 android 工作室。当我尝试生成签名的 apk 时,我收到此错误:
Error:(24) Error: This fragment should provide a default constructor (a public constructor with no arguments) (com.example.mike.beerportfolionewicon.BarcodeFrag) [ValidFragment]
课程是这样开始的:
public class BarcodeFrag extends Fragment implements ReadJSONResult.OnArticleSelectedListener {
private ListView lv;
View v;
SearchView searchView;
private SearchView mSearchView;
private MenuItem mSearchMenuItem;
String id;
public BarcodeFrag(String scanContent) {
id = scanContent;
}
我选择了忽略检查的选项,但它仍然不会创建 apk...
尝试将其更改为这个,但同样的错误:
public class BarcodeFrag extends Fragment implements ReadJSONResult.OnArticleSelectedListener {
private ListView lv;
View v;
SearchView searchView;
private SearchView mSearchView;
private MenuItem mSearchMenuItem;
String id;
public BarcodeFrag(){}
public BarcodeFrag(String scanContent) {
id = scanContent;
}
其实是另一个错误:
Error:(35) Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]
整个代码现在看起来像这样:
public class BarcodeFrag extends Fragment implements ReadJSONResult.OnArticleSelectedListener {
private ListView lv;
View v;
SearchView searchView;
private SearchView mSearchView;
private MenuItem mSearchMenuItem;
String id;
public BarcodeFrag(){}
public BarcodeFrag(String scanContent) {
id = scanContent;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//set layout here
v = inflater.inflate(R.layout.activity_search, container, false);
setHasOptionsMenu(true);
getActivity().setTitle("Search");
//get user information
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
String userName = prefs.getString("userName", null);
String userID = prefs.getString("userID", null);
//run code with barcode content
String url = "http://api.brewerydb.com/v2/search/upc?code="+ id +"&key=xxx&format=json&withBreweries=y";
//run async task
ReadJSONResult task = new ReadJSONResult(getActivity());
task.setOnArticleSelectedListener(this);
task.execute(url);
return v;
}
@Override
public void onArticleSelected(String b, String brewery){
//code to execute on click
Fragment Fragment_one;
FragmentManager man= getFragmentManager();
FragmentTransaction tran = man.beginTransaction();
Fragment_one = new BeerTabs();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("beerID",b);
editor.putString("breweryID",brewery);
editor.commit();
tran.replace(R.id.main, Fragment_one);//tran.
tran.addToBackStack(null);
tran.commit();
}
}
【问题讨论】:
-
加
public BarcodeFrag(){} -
您是否尝试添加默认构造函数?
-
在代码的哪里,我在 public BarcodeFrag (String scanContent){...} 之后添加了它,它没有工作
-
你还遇到同样的错误吗?
-
将我尝试做的事情添加到我的原始帖子中,但没有帮助
标签: android android-studio apk