2015-07-15 2 views
0

Я новичок в Android, у меня есть два вопроса.Как показать другой макет при успешном входе в систему

  1. Я хочу показать другой макет при успешном входе в систему.

  2. еще часть не работает в onsuccess() способ. Если пользователь вводит неверный логин и пароль означает сообщение об ошибке броска, но я получаю ошибку:

    application stopped unfortunately

Вот мой код:

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

import android.app.Activity; 
import android.os.Bundle; 
public class Search extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //Displays Search Screen 
     setContentView(R.layout.search); 
    } 
} 

Первый вопрос LogCat:

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) 

Второй вопрос LogCat:

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) 
+1

Какую ошибку вы получаете? – Srijith

+1

Это не ошибка. Скопируйте свой логарифм здесь. – ChiefTwoPencils

+0

@Razul вы рассмотрели вопрос о ответе на этот вопрос – AnswerDroid

ответ

1

Вставьте этот <activity android:name="com.h2o.Search" ></activity> в вашем AndroidManifest.xml

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="18" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.stockquote.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.h2o.Search" > 
    </activity> 
</application> 
1

Просьба объявить класс поиска в файле манифеста вашего проекта.

Пример:

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

Я получил его. Большое вам спасибо ... – Razul

+0

@Appu Возможно, подумайте о принятии одного из предоставленных ответов? Это способ сказать «спасибо» здесь :) – milez

2

Ошибка ясно показана в LogCat условия.
1) Деятельность не объявлена ​​в манифесте. Объявите его в теге активности.
2) Вы устанавливаете текст в текстовом режиме без его инициализации.
например: TextView tv=(TextView)fingViewById(R.id.tv1);

1

Для первого вопроса кажется, что вы хотите начать новую деятельность с новой компоновки. Пожалуйста, прочитайте Google tutorial, это очень полезно по теме (добавив активность в свою среду IDE, вам не нужно самостоятельно редактировать файл манифеста, как вам помогут другие ответы).

Для второго вопроса кажется, что ваша ошибкаMsg не инициализирована. Вам нужно что-то вдоль

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

findViewById() является метод Activity класса, так что вам, возможно, придется взять его с getActivity().

2

Для первого вопроса

Добавить запись в манифесте для search activity.

<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.Check if your response is null or not.

2.The error can be the JSONobject from which you are fetching status check whether your obj is null or not.

3.Check whether you have declare and initialise your errorMsg textview.

Смежные вопросы