- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我卡在我的代码中,我正在使用抽屉布局,而在 fragment 布局上,我想在从数据库中获取人员列表后显示它。在 fragment 类中,当我使用游标适配器查询并将其设置为列表适配器时,错误显示:
类型 LoaderManager 中的方法 initLoader(int, Bundle, LoaderManager.LoaderCallbacks) 不适用于参数 (int, null, MainFragment)。
我哪里错了,请帮忙。如果您需要更多信息,请询问。下面是我的 fragment 类及其相应的布局代码。提前致谢。
fragment 类:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.bnkinfotech.corporatedirectory.Directory.Mobile;
import com.bnkinfotech.corporatedirectory.Directory.Telephone;
import android.app.ListFragment;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
//import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.support.v4.content.CursorLoader;
import android.support.v4.widget.CursorAdapter;
public class MainFragment extends ListFragment implements LoaderCallbacks<Cursor> {
String loginPref;
String email;
String updatedDate;
String onlineemail = null;
SharedPreferences prefAccount;
protected Cursor cursor;
protected ListAdapter adapter;
protected SQLiteDatabase db;
public static String ArgAccountNumber = "account_list_number";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
prefAccount = getActivity().getSharedPreferences("CoDiAccount", Context.MODE_PRIVATE);
onlineemail = prefAccount.getString("email", "-1").toLowerCase();
String directoryname = "CoDiApp" + onlineemail;
SharedPreferences prefs = getActivity().getSharedPreferences(directoryname, Context.MODE_PRIVATE);
loginPref = prefs.getString("login", "-1");
email = prefs.getString("email", "-1").toLowerCase();
updatedDate = prefs.getString("lastupdateddate", "-1");
View rootView = inflater.inflate(R.layout.main_fragment, container, false);
return rootView;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
}
@Override
public void onStart() {
super.onStart();
if (loginPref == "1")
{
showContacts();
}
else if (loginPref == "0")
{
//Validate account
Intent verifyAccount = new Intent(getActivity(), VerifyAccountActivity.class);
getActivity().startActivity(verifyAccount);
}
else
{
//Email Login
Intent checkEmail = new Intent(getActivity(), CheckEmailActivity.class);
getActivity().startActivity(checkEmail);
}
}
public int showContacts() {
SharedPreferences prefAccount = getActivity().getSharedPreferences("CoDiAccount", Context.MODE_PRIVATE);
String onlineemail = prefAccount.getString("email", "-1").toLowerCase(Locale.ENGLISH);
String directoryname = "CoDiApp" + onlineemail;
SharedPreferences prefs = getActivity().getSharedPreferences(directoryname, Context.MODE_PRIVATE);
String loadxml = prefs.getString("loadxml", "-1");
String groupBy = prefs.getString("groupby", "0");
if (loadxml == "-1")
{
LoadXMLFile();
Editor prefEditor = prefs.edit();
prefEditor.putString("loadxml", "1");
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
prefEditor.putString("lastupdateddate", timeStamp.toString());
prefEditor.commit();
}
String[] uiBindFrom = { SQLiteDB.FIRST_NAME, SQLiteDB.LAST_NAME };
int[] uiBindTo = { R.id.firstName, R.id.lastName };
getLoaderManager().initLoader(0, null, this);
adapter = new SimpleCursorAdapter(
getActivity().getApplicationContext(), R.layout.main_fragment,
null, uiBindFrom, uiBindTo,
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
setListAdapter(adapter);
return 1;
}
public void LoadXMLFile() {
String response = "";
RequestManager rm = new RequestManager();
String x = "";
ArrayList<Mobile> arrMob;
ArrayList<Telephone> arrTel;
try
{
if(isValidEmail(email))
{
String url = String.format("GetDirectory/{0}", email);
response = rm.GetResponse(url);
try {
// Create your Json Array
JSONArray lList=new JSONArray(response);
// Iterate the json array to get each Json object
for (int i = 0; i < lList.length(); i++) {
JSONObject lObject=lList.getJSONObject(i);
String fName=lObject.getString("FirstName");
String lName=lObject.getString("LastName");
String gName=lObject.getString("GroupName");
JSONArray jsonArr= lObject.getJSONArray("MobileNumbers");
Mobile[] mNumbers=new Mobile[jsonArr.length()];
arrMob = new ArrayList<Mobile>();
for(int j=0;j<jsonArr.length();j++)
{
mNumbers[j]= (Mobile) jsonArr.get(j);
arrMob.add(mNumbers[j]);
}
JSONArray jsonArrTel= lObject.getJSONArray("TelephoneNumbers");
Telephone [] tNumbers=new Telephone[jsonArrTel.length()];
arrTel = new ArrayList<Telephone>();
for(int k=0;k<jsonArrTel.length();k++)
{
tNumbers[k]=(Telephone) jsonArrTel.get(k);
arrTel.add(tNumbers[k]);
}
String hAddress=lObject.getString("HomeAddress");
String oAddress=lObject.getString("OfficeAddress");
//Code to Insert in Sqlite database .....
Directory dir = new Directory();
dir.setFirstName(fName);
dir.setLastName(lName);
dir.setGroupName(gName);
dir.setMobiles(arrMob);
dir.setTelephones(arrTel);
dir.setHomeAddress(hAddress);
dir.setOfficeAddress(oAddress);
DatabaseHandler dbHandler = new DatabaseHandler(getActivity().getApplicationContext());
SQLiteDatabase sqliteDatabase = dbHandler.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseHandler.ID, dir.getId());
contentValues.put(DatabaseHandler.FIRST_NAME, dir.getFirstName());
contentValues.put(DatabaseHandler.LAST_NAME, dir.getLastName());
contentValues.put(DatabaseHandler.GROUP_NAME, dir.getGroupName());
contentValues.put(DatabaseHandler.MOBILES, dir.getMobiles().toString());
contentValues.put(DatabaseHandler.TELEPHONES, dir.getTelephones().toString());
contentValues.put(DatabaseHandler.HOME_ADDRESS, dir.getHomeAddress());
contentValues.put(DatabaseHandler.OFFICE_ADDRESS, dir.getOfficeAddress());
sqliteDatabase.insert(DatabaseHandler.TABLE_NAME_MEMBER, null, contentValues);
sqliteDatabase.close();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
else
{
String msg = "Sorry, invalid email";
Toast.makeText(getActivity().getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
}
catch (Exception ex)
{
response = ex.getMessage().toString();
}
}
public final static boolean isValidEmail(CharSequence email) {
if (email == null) {
return false;
} else {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
}
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
String[] projection = { SQLiteDB.ID, SQLiteDB.FIRST_NAME, SQLiteDB.LAST_NAME };
CursorLoader cursorLoader = new CursorLoader(getActivity(),
DatabaseAccessUtility.CONTENT_URI, projection, null, null, null);
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
((SimpleCursorAdapter) adapter).swapCursor(arg1);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
((SimpleCursorAdapter) adapter).swapCursor(null);
}
}
MainFragment 布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25dp"
android:minHeight="25dp"
android:id="@+id/FlyOutContent">
<LinearLayout
android:id="@+id/linlaHeaderProgress"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone">
<ProgressBar
android:id="@+id/pbHeaderProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<RelativeLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="8dp" >
<TextView
android:id="@+id/firstName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First" />
<TextView
android:id="@+id/lastName"
android:layout_marginLeft="6dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/firstName"
android:text="Last" />
</RelativeLayout>
<LinearLayout
android:orientation="vertical"
android:minWidth="25dp"
android:minHeight="25dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/empty">
<TextView
android:text="@string/NoFavoritesText"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/textView1"
android:gravity="center"
android:layout_marginLeft="12dip"
android:layout_marginRight="12dip"
android:textColor="#ff5a5a5a"
android:layout_marginTop="80dip" />
</LinearLayout>
</LinearLayout>
最佳答案
由于您使用的是支持库,因此请改用:
getActivity().getSupportLoaderManager().initLoader(0, null, this);
关于android - 方法 initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) 一直给我不适用的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454018/
这个问题已经有答案了: Difference between $Bundle install and $Bundle update (2 个回答) 已关闭 9 年前。 bundle 之间有什么区别,
我正在尝试加载 Nib ,但不断收到以下错误: -[NSViewController initWithCoder:] could not instantiate an NSViewController
bundle有什么区别& bundler命令? bundle有什么区别& bundle install ? 如果没有区别,为什么有多个命令做同样的事情? 最佳答案 可执行文件 bundle & bun
我们有托管在应用程序中的单元测试。要加载测试资源,我们使用:Bundle(for: TestClass.self).path(forResource: "some-file", ofType: "js
我刚刚克隆了一个新的 repo 并尝试运行 bundle install但出现以下错误 Fetching gem metadata from https://abcderepos.net/api/ge
我添加了一个共享框架来在应用程序和 watch 扩展之间共享代码。后来我删除了共享框架,因为它会导致很多问题。我可以 build 并在 iphone 上运行我的应用程序并观看。然而,当我提交到应用商店
这个问题有点类似于 this one ,但不完全是。我有一个 C# 游戏引擎,我正在与一些想要使用我的引擎的人一起工作。最初我设计了引擎,以便所有 Assets 都是外部的——非程序员可以创建艺术、音
我正在尝试使用 OSGi 实现客户端-服务器模型。服务器应用程序是在计算机中运行的 OSGi 框架,客户端应用程序远程连接到其控制台并通过 Java 套接字发送命令并接收正确的响应。每个客户端应用程序
我目前正在将我的 Angular 2 应用程序与 WebPack bundle 在一起。我们仍在快速循环,因此我们不想在构建和应用程序加载过程中增加延迟,而是希望包括很少更改的 Angular 2 U
基本上,我有一个捆绑软件,经常在其他 View 中使用,加上其他js文件,因此我可以在保留其顺序的同时将这些文件添加到现有捆绑软件中吗? 最佳答案 我到处都在查找它,但找不到将两个捆绑软件合并在一起的
我有一个大约 12GB 的巨大 mercurial 存储库。我需要在另一台机器上克隆它,但是从网络中提取它需要花费很多时间。当我尝试将所有变更集 bundle 到一个 bundle 文件中时,文件的大
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
如果我检查使用 angular-cli 创建的 angular 2 项目的 index.html 文件,我可以看到该页面仅包含 dist 文件夹中的 3 个文件: inline.bundle.js v
我从程序包管理器http://localhost:4502/crx/packmgr/index.jsp中从正在运行的AEM实例下载了一个zip文件。提取后的zip文件包含jcr_root和META-I
已经提出了有关捆绑名称和捆绑显示名称的类似问题,例如: What's the difference between "bundle display name" and "bundle name" in
我正在尝试在 iTunes 上上传我的应用程序。为此,我创建了一个应用程序 ID 并保留了一个包标识符。在我的项目中,我更改了 info.plist 文件中的包标识符。但是,当我尝试在 itunes
我想从 OSGI 包启动 OSGI 包。正如您所看到的,此代码通过从目录部署它来启动 bundle : private void installStartBundle(BundleContext bc
所以这真的让我头疼,我终于放弃了,在这里发表了问题。我正在尝试更新iTune商店中的一个客户端应用程序,并且在上传到App Store时遇到以下错误。 因此,我已经尝试通过两次使用包sid id创建新
我在 typescript 中使用 aurelia,我想避免使用像这样的相对导入路径: import { DialogBox } from '../../resources/elements/dial
有什么区别 ResourceBundle.getBundle("Bundle") 还有这个 ResourceBundle.getBundle("/Bundle") 最佳答案 来自the Java do
我是一名优秀的程序员,十分优秀!