Android 数据库和应用程序的首次运行
所以我必须更新我的数据库并重新启动我的应用程序。然而,当我这样做时,我得到了下面列出的一个运行时错误。我不知道为什么这里会出错,但似乎一切都正常Android 数据库和应用程序的首次运行,android,Android,所以我必须更新我的数据库并重新启动我的应用程序。然而,当我这样做时,我得到了下面列出的一个运行时错误。我不知道为什么这里会出错,但似乎一切都正常 06-13 08:53:32.843: W/dalvikvm(10574): threadid=1: thread exiting with uncaught exception (group=0x41594360) 06-13 08:53:32.903: E/AndroidRuntime(10574): FATAL EXCEPTION
06-13 08:53:32.843: W/dalvikvm(10574): threadid=1: thread exiting with uncaught exception (group=0x41594360)
06-13 08:53:32.903: E/AndroidRuntime(10574): FATAL EXCEPTION: main
06-13 08:53:32.903: E/AndroidRuntime(10574): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.projectcaruso.naturalfamilyplaning/com.projectcaruso.naturalfamilyplaning.FragmentChange}: java.lang.NullPointerException
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.ActivityThread.access$700(ActivityThread.java:143)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.os.Handler.dispatchMessage(Handler.java:99)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.os.Looper.loop(Looper.java:137)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.ActivityThread.main(ActivityThread.java:4950)
06-13 08:53:32.903: E/AndroidRuntime(10574): at java.lang.reflect.Method.invokeNative(Native Method)
06-13 08:53:32.903: E/AndroidRuntime(10574): at java.lang.reflect.Method.invoke(Method.java:511)
06-13 08:53:32.903: E/AndroidRuntime(10574): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
06-13 08:53:32.903: E/AndroidRuntime(10574): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
06-13 08:53:32.903: E/AndroidRuntime(10574): at dalvik.system.NativeStart.main(Native Method)
06-13 08:53:32.903: E/AndroidRuntime(10574): Caused by: java.lang.NullPointerException
06-13 08:53:32.903: E/AndroidRuntime(10574): at com.projectcaruso.naturalfamilyplaning.WelcomeFragment.onCreateView(WelcomeFragment.java:111)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.Activity.performStart(Activity.java:5187)
06-13 08:53:32.903: E/AndroidRuntime(10574): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2083)
06-13 08:53:32.903: E/AndroidRuntime(10574): ... 11 more
这是一个类:它说它出错的那一行是111mlblEmail.setVisibility(View.GONE)代码>
公共类WelcomeFragment扩展了片段{
私人UiLifecycleHelper uiHelper;
网络视图;
TextView mName、mother、mlblEmail、mlblName、mlblotter;
图像视图模拟图像;
登录按钮mAuthButton;
最终静态整数授权\活动\结果\代码=0;
字符串[]权限={“用户关系”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
super.onCreate(savedInstanceState);
视图=充气机。充气(R.layout.fragment\u welcome,null);
uiHelper=newUILifecycleHelper(getActivity(),回调);
uiHelper.onCreate(savedInstanceState);
字符串about=getResources().getString(R.String.about_msg);
mName=(TextView)view.findViewById(R.id.txtName);
mother=(TextView)view.findViewById(R.id.txtOther);
mImage=(ImageView)view.findViewById(R.id.profilepicture);
mAuthButton=(LoginButton)view.findViewById(R.id.authButton);
about=about.replace(“\\”,“”);
about=“”
+“”
+关于+“
”
+ "";
mWebView=((WebView)view.findViewById(R.id.about));
loadData(关于“text/html”、“utf-8”);
//获取数据
游标c=getActivity().getContentResolver().query(StatusProvider.CONTENT\u URI\u USER,null,null,null);
if((c.moveToFirst())&&(c.getCount()>0))
{
mAuthButton.setVisibility(View.GONE);
mName.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_NAME));//NAME
//new ImageDownloader().execute(c.getString(c.getColumnIndex(StatusData.KEY_USER_EMAIL));//调用asynctask
mother.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_OTHER));//重要的_OTHER
水渠aq=新水渠(视图);
//按url返回缓存的文件,如果url未缓存,则返回null
File File=aq.getCachedFile(c.getString(c.getColumnIndex(StatusData.KEY\u USER\u PICTURE));
if(file==null){
Log.i(“PROJECTCARUSO”,“未在文件中找到用户图片”);
//将图像从网络加载到ImageView,将图像缓存到文件和内存
aq.id(R.id.profilepicture).image(c.getString(c.getColumnIndex(StatusData.KEY\u USER\u PICTURE));
}否则{
Log.i(“PROJECTCARUSO”,“在文件中找到用户图片”);
位图myBitmap=BitmapFactory.decodeFile(file.getAbsolutePath());
设置图像位图(myBitmap);
}
Log.i(“PROJECTCARUSO”,“在数据库中找到用户信息”);
}否则{
mlblName=(TextView)view.findViewById(R.id.lblName);
mlblotter=(TextView)view.findViewById(R.id.lblOther);
//隐藏一切
mName.setVisibility(View.GONE);
母亲.setVisibility(View.GONE);
mImage.setVisibility(View.GONE);
mlblName.setVisibility(View.GONE);
mlblEmail.setVisibility(View.GONE);
mlblotter.setVisibility(View.GONE);
Log.i(“PROJECTCARUSO”,“在数据库中未找到用户信息”);
}
mAuthButton.setFragment(this);
mAuthButton.setReadPermissions(Arrays.asList(“email”);
返回视图;
}
公共视图(){
//获取数据
游标c=getActivity().getContentResolver().query(StatusProvider.CONTENT\u URI\u USER,null,null,null);
if((c.moveToFirst())&&(c.getCount()>0))
{
mAuthButton.setVisibility(View.GONE);
//展示一切
mName.setVisibility(View.VISIBLE);
setVisibility(View.VISIBLE);
mImage.setVisibility(View.VISIBLE);
mlblName.setVisibility(View.VISIBLE);
mlblEmail.setVisibility(View.VISIBLE);
mlblotter.setVisibility(View.VISIBLE);
mName.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_NAME));//NAME
//new ImageDownloader().execute(c.getString(c.getColumnIndex(StatusData.KEY_USER_EMAIL));//调用asynctask
mother.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_OTHER));//重要的_OTHER
AQuery aq=新的AQuery(getActivity());
//按url返回缓存的文件,如果url未缓存,则返回null
File File=aq.getCachedFile(c.getString(c.getColumnIndex(StatusData.KEY\u USER\u PICTURE));
if(file==null){
Log.i(“PROJECTCARUSO”,“未在文件中找到用户图片”);
//将图像从网络加载到ImageView,将图像缓存到文件和内存
aq.id(R.id.profilepicture).image(c.getString(c.getColumnIndex(StatusData.KEY\u USER\u PICTURE));
}否则{
Log.i(“PROJECTCARUSO”,“在文件中找到用户图片”);
位图myBitmap=BitmapFactory.decodeFile(file.getAbsolutePath());
设置图像位图(myBitmap);
}
Log.i(“PROJECTCARUSO”,“在数据库中找到用户信息”);
}否则{
Log.i(“PROJECTCARUSO”,“在数据库中未找到用户信息”);
}
}
private void OnSessionState更改(会话、会话状态、异常){
if(state.isOpened()){
//请求用户数据并显示结果
Request.executeRequestAsync(会话,新R
public class WelcomeFragment extends Fragment {
private UiLifecycleHelper uiHelper;
WebView mWebView;
TextView mName, mother, mlblEmail, mlblName, mlblOther;
ImageView mImage;
LoginButton mAuthButton;
final static int AUTHORIZE_ACTIVITY_RESULT_CODE = 0;
String[] permissions = { "user_relationships" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.fragment_welcome, null);
uiHelper = new UiLifecycleHelper(getActivity(), callback);
uiHelper.onCreate(savedInstanceState);
String about = getResources().getString(R.string.about_msg);
mName = (TextView) view.findViewById(R.id.txtName);
mother = (TextView) view.findViewById(R.id.txtOther);
mImage = (ImageView) view.findViewById(R.id.profilepicture);
mAuthButton = (LoginButton) view.findViewById(R.id.authButton);
about = about.replace("\\", "");
about = "<html><body>"
+ "<p align=\"justify\">"
+ about + "</p> "
+ "</body></html>";
mWebView = ((WebView) view.findViewById(R.id.about));
mWebView.loadData(about, "text/html", "utf-8");
// Get the data
Cursor c = getActivity().getContentResolver().query(StatusProvider.CONTENT_URI_USER, null, null, null, null);
if((c.moveToFirst()) && (c.getCount()>0))
{
mAuthButton.setVisibility(View.GONE);
mName.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_NAME))); //name
//new ImageDownloader().execute(c.getString(c.getColumnIndex(StatusData.KEY_USER_EMAIL)); //call asynctask
mother.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_OTHER))); //significant_other
AQuery aq = new AQuery(view);
//returns the cached file by url, returns null if url is not cached
File file = aq.getCachedFile(c.getString(c.getColumnIndex(StatusData.KEY_USER_PICTURE)));
if (file == null) {
Log.i("PROJECTCARUSO", "Did not find user picture on file" );
//load an image to an ImageView from network, cache image to file and memory
aq.id(R.id.profilepicture).image(c.getString(c.getColumnIndex(StatusData.KEY_USER_PICTURE)));
} else {
Log.i("PROJECTCARUSO", "Found user picture on file" );
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
mImage.setImageBitmap(myBitmap);
}
Log.i("PROJECTCARUSO", "Found user information in database" );
} else {
mlblName = (TextView) view.findViewById(R.id.lblName);
mlblOther = (TextView) view.findViewById(R.id.lblOther);
//Hide everything
mName.setVisibility(View.GONE);
mother.setVisibility(View.GONE);
mImage.setVisibility(View.GONE);
mlblName.setVisibility(View.GONE);
mlblEmail.setVisibility(View.GONE);
mlblOther.setVisibility(View.GONE);
Log.i("PROJECTCARUSO", "Did not find user information in database" );
}
mAuthButton.setFragment(this);
mAuthButton.setReadPermissions(Arrays.asList("email"));
return view;
}
public void refreshView(){
// Get the data
Cursor c = getActivity().getContentResolver().query(StatusProvider.CONTENT_URI_USER, null, null, null, null);
if((c.moveToFirst()) && (c.getCount()>0))
{
mAuthButton.setVisibility(View.GONE);
//Show everything
mName.setVisibility(View.VISIBLE);
mother.setVisibility(View.VISIBLE);
mImage.setVisibility(View.VISIBLE);
mlblName.setVisibility(View.VISIBLE);
mlblEmail.setVisibility(View.VISIBLE);
mlblOther.setVisibility(View.VISIBLE);
mName.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_NAME))); //name
//new ImageDownloader().execute(c.getString(c.getColumnIndex(StatusData.KEY_USER_EMAIL)); //call asynctask
mother.setText(c.getString(c.getColumnIndex(StatusData.KEY_USER_OTHER))); //significant_other
AQuery aq = new AQuery(getActivity());
//returns the cached file by url, returns null if url is not cached
File file = aq.getCachedFile(c.getString(c.getColumnIndex(StatusData.KEY_USER_PICTURE)));
if (file == null) {
Log.i("PROJECTCARUSO", "Did not find user picture on file" );
//load an image to an ImageView from network, cache image to file and memory
aq.id(R.id.profilepicture).image(c.getString(c.getColumnIndex(StatusData.KEY_USER_PICTURE)));
} else {
Log.i("PROJECTCARUSO", "Found user picture on file" );
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
mImage.setImageBitmap(myBitmap);
}
Log.i("PROJECTCARUSO", "Found user information in database" );
} else {
Log.i("PROJECTCARUSO", "Did not find user information in database" );
}
}
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (state.isOpened()) {
// Request user data and show the results
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
// Get the user info
Log.i("PROJECTCARUSO", "Getting the reponse data! ");
Utility.userUID = user.getId();
final String name = user.getName();
final String fname = user.getFirstName();
final String username = user.getUsername();
final String email = (String) user.getProperty("email");
String picURL = null;
String significant_other = null;
try {
String inputLine = user.getProperty("significant_other").toString();
JSONObject json = new JSONObject(inputLine.toString());
significant_other = json.get("name").toString();
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
picURL = "http://graph.facebook.com/"+Utility.userUID+"/picture";
Log.i("PROJECTCARUSO", "Logged in...");
try{
ContentValues values = new ContentValues();
values.put(StatusData.KEY_USER_ROWID, Utility.userUID);
values.put(StatusData.KEY_USER_NAME, name);
values.put(StatusData.KEY_USER_FNAME, fname);
values.put(StatusData.KEY_USER_USERNAME, username);
values.put(StatusData.KEY_USER_EMAIL, email);
values.put(StatusData.KEY_USER_PICTURE, picURL);
values.put(StatusData.KEY_USER_OTHER, significant_other);
StatusData StatusData = new StatusData(getActivity());
StatusData.insertOrReplaceUser(values);
Log.i("PROJECTCARUSO", "Insert of facebook information was successfull ");
refreshView();
} catch (Exception e ) {
Log.i("PROJECTCARUSO", "Insert of facebook information was not successfull ");
}
}
}
});
} else if (state.isClosed()) {
Log.i("PROJECTCARUSO", "Logged out...");
Log.i("PROJECTCARUSO", "Exception: " + exception);
}
}
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
@Override
public void onResume() {
super.onResume();
// For scenarios where the main activity is launched and user
// session is not null, the session state change notification
// may not be triggered. Trigger it if it's open/closed.
Session session = Session.getActiveSession();
if (session != null &&
(session.isOpened() || session.isClosed()) ) {
onSessionStateChange(session, session.getState(), null);
}
uiHelper.onResume();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
uiHelper.onSaveInstanceState(outState);
}
}
mlblEmail =(TextView) view.findViewById(R.id.textview);