Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在登录成功时显示其他布局_Java_Android_Android Layout - Fatal编程技术网

Java 如何在登录成功时显示其他布局

Java 如何在登录成功时显示其他布局,java,android,android-layout,Java,Android,Android Layout,我是Android新手,我有两个问题 我想在登录成功时显示另一个布局 else部分在onsuccess()方法中不工作。如果用户提供了错误的用户名和密码,则表示抛出错误消息,但我收到错误: 应用程序不幸停止 这是我的密码: LoginFragment.java public void onSuccess(int statusCode, Header[] headers, byte[] response) { // Hide Progress Dialog

我是Android新手,我有两个问题

  • 我想在登录成功时显示另一个布局

  • else部分在
    onsuccess()方法中不工作。如果用户提供了错误的用户名和密码,则表示抛出错误消息,但我收到错误:

    应用程序不幸停止

  • 这是我的密码:

    LoginFragment.java

    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
    
                    // Hide Progress Dialog
    
                    prgDialog.hide();
                    try {
                        // JSON Object
                        JSONObject obj = new JSONObject(new String(response));
                        // When the JSON response has status boolean value assigned with true
                        if (obj.getBoolean("status")) {
                            Toast.makeText(getActivity().getApplicationContext(), "You are successfully logged in!", Toast.LENGTH_LONG).show();
                            // Navigate to Home screen
                            navigatetoSearchActivity();
                        }
                        // Else display error message
                        else {
                            errorMsg.setText(obj.getString("error_msg"));
                            Toast.makeText(getActivity().getApplicationContext(), obj.getString("error_msg"), Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        Toast.makeText(getActivity().getApplicationContext(), "Error Occured [Server's JSON response might be invalid]!", Toast.LENGTH_LONG).show();
                        e.printStackTrace();
    
                    }
                }
    
    
                // When the response returned by REST has Http response code other than '200'
                @Override
                public void onFailure(int statusCode, Header[] headers, byte[] responsebody, Throwable error) {
                    // Hide Progress Dialog
                    prgDialog.hide();
                    // When Http response code is '404'
                    if (statusCode == 404) {
                        Toast.makeText(getActivity().getApplicationContext(), "Requested resource not found", Toast.LENGTH_LONG).show();
                    }
                    // When Http response code is '500'
                    else if (statusCode == 500) {
                        Toast.makeText(getActivity().getApplicationContext(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
                    }
                    // When Http response code other than 404, 500
                    else {
                        Toast.makeText(getActivity().getApplicationContext(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
                    }
    
                }
            });
        }
        /**
         * Method which navigates from Login Activity to Search Activity
         */
        public void navigatetoSearchActivity(){
            Intent searchIntent = new Intent(getActivity().getApplicationContext(),Search.class);
            //searchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(searchIntent);
        }
    
    Search.java

    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
    
                    // Hide Progress Dialog
    
                    prgDialog.hide();
                    try {
                        // JSON Object
                        JSONObject obj = new JSONObject(new String(response));
                        // When the JSON response has status boolean value assigned with true
                        if (obj.getBoolean("status")) {
                            Toast.makeText(getActivity().getApplicationContext(), "You are successfully logged in!", Toast.LENGTH_LONG).show();
                            // Navigate to Home screen
                            navigatetoSearchActivity();
                        }
                        // Else display error message
                        else {
                            errorMsg.setText(obj.getString("error_msg"));
                            Toast.makeText(getActivity().getApplicationContext(), obj.getString("error_msg"), Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        Toast.makeText(getActivity().getApplicationContext(), "Error Occured [Server's JSON response might be invalid]!", Toast.LENGTH_LONG).show();
                        e.printStackTrace();
    
                    }
                }
    
    
                // When the response returned by REST has Http response code other than '200'
                @Override
                public void onFailure(int statusCode, Header[] headers, byte[] responsebody, Throwable error) {
                    // Hide Progress Dialog
                    prgDialog.hide();
                    // When Http response code is '404'
                    if (statusCode == 404) {
                        Toast.makeText(getActivity().getApplicationContext(), "Requested resource not found", Toast.LENGTH_LONG).show();
                    }
                    // When Http response code is '500'
                    else if (statusCode == 500) {
                        Toast.makeText(getActivity().getApplicationContext(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
                    }
                    // When Http response code other than 404, 500
                    else {
                        Toast.makeText(getActivity().getApplicationContext(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
                    }
    
                }
            });
        }
        /**
         * Method which navigates from Login Activity to Search Activity
         */
        public void navigatetoSearchActivity(){
            Intent searchIntent = new Intent(getActivity().getApplicationContext(),Search.class);
            //searchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(searchIntent);
        }
    
    导入android.app.Activity;
    导入android.os.Bundle;
    公共类搜索扩展了活动{
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    //显示搜索屏幕
    setContentView(R.layout.search);
    }
    }
    
    第一个问题日志:

     java.lang.RuntimeException: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.h2o/com.h2o.Search}; have you declared this activity in your AndroidManifest.xml?
                at com.loopj.android.http.AsyncHttpResponseHandler.onUserException(AsyncHttpResponseHandler.java:313)
                at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:404)
                at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
         Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.h2o/com.h2o.Search}; have you declared this activity in your AndroidManifest.xml?
                at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1761)
                at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
                at android.app.Activity.startActivityForResult(Activity.java:3736)
                at android.app.Activity.startActivityForResult(Activity.java:3697)
                at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:829)
                at android.support.v4.app.Fragment.startActivity(Fragment.java:897)
                at com.h2o.LoginFragment$TabsAdapter.navigatetoSearchActivity(LoginFragment.java:278)
                at com.h2o.LoginFragment$TabsAdapter$3.onSuccess(LoginFragment.java:235)
                at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:360)
                at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    
    java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at com.loopj.android.http.AsyncHttpResponseHandler.onUserException(AsyncHttpResponseHandler.java:313)
            at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:404)
            at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at com.h2o.LoginFragment$TabsAdapter$3.onSuccess(LoginFragment.java:239)
            at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:360)
            at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    
    第二个问题日志:

     java.lang.RuntimeException: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.h2o/com.h2o.Search}; have you declared this activity in your AndroidManifest.xml?
                at com.loopj.android.http.AsyncHttpResponseHandler.onUserException(AsyncHttpResponseHandler.java:313)
                at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:404)
                at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
         Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.h2o/com.h2o.Search}; have you declared this activity in your AndroidManifest.xml?
                at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1761)
                at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
                at android.app.Activity.startActivityForResult(Activity.java:3736)
                at android.app.Activity.startActivityForResult(Activity.java:3697)
                at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:829)
                at android.support.v4.app.Fragment.startActivity(Fragment.java:897)
                at com.h2o.LoginFragment$TabsAdapter.navigatetoSearchActivity(LoginFragment.java:278)
                at com.h2o.LoginFragment$TabsAdapter$3.onSuccess(LoginFragment.java:235)
                at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:360)
                at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    
    java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at com.loopj.android.http.AsyncHttpResponseHandler.onUserException(AsyncHttpResponseHandler.java:313)
            at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:404)
            at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at com.h2o.LoginFragment$TabsAdapter$3.onSuccess(LoginFragment.java:239)
            at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:360)
            at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    
    在AndroidManifest.xml中插入此


    请在项目的清单文件中声明搜索类

    样本:

    <activity android:name=".Search">   </activity>
    

    提供的日志中清楚地显示了错误。
    1) 活动未在清单中声明。在活动标签中声明它。
    2) 您在文本视图上设置文本而不初始化它。

    例如:
    TextView电视=(TextView)fingviewbyd(R.id.tv1)

    对于第一个问题,您似乎希望以新的布局开始新的活动。请阅读,这对主题非常有帮助(通过在IDE中添加活动,您不必自己编辑清单文件,其他答案会引导您)

    对于第二个问题,您的errorMsg似乎未初始化。你需要带点东西

    errorMsg = (TextView) findViewById(R.id.errorMessageId);
    

    findViewById()
    Activity
    类的方法,所以对于第一个问题,您可能需要使用
    getActivity()
    获取它

    在清单中添加
    搜索活动
    的条目

    <activity
        android:name="com.packagename.yourMainActivityName" >
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
    </activity>
    
    
    
    第二个问题: 检查以下几点可以解决您的问题:

    1.检查您的响应是否为空

    2.错误可能是从中获取
    状态的
    JSONobject
    ,请检查您的
    obj
    是否为空

    3.检查您是否已声明并初始化您的
    errorMsg
    textview


    你犯了什么错误?那不是错误。在这里复制你的日志。@Razul你考虑过给这个答案打分吗question@Appu也许考虑接受一个提供的答案?这是在这里说“谢谢”的方式:)