2013-03-15 3 views
0

У меня есть табуляция, которая имеет 5 tab.Each и каждый из них - одно действие. На одной вкладке открывается новая активность, открывающая предупреждение. Теперь все работает хорошо.получение исключения nullpointer на getLocalActivityManager(). GetCurrentActivity()

Моя проблема в том, когда я возвращаюсь с (кнопка «Назад»), что дочерняя активность вызывает onBackPressed из ее родительской активности, поэтому я проверяю имя активности getLocalActivityManager().getCurrentActivity().toString(), она также работает, когда я нажимаю кнопку «Назад» из дочерней активности, Он проверяет имя активности, используя getLocalActivityManager().getCurrentActivity().toString().

Но когда я нажимаю кнопку «Назад» из моей родительской активности, она дает исключение NullPointer. Может быть getLocalActivityManager().getCurrentActivity().toString() не работает при вызове из родительской активности

LogCat Ошибка

enter image description here

Родитель активность

public class ProgressActivity extends ActivityGroup 
{ 
private ArrayList<View> history; 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.progress_tabview); 
    this.history = new ArrayList<View>(); 
} 
public void showProgress(View v) 
{ 
    Intent intMyProg = new Intent(this,ShowProgress.class); 
    //intMyProg.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    //startActivity(intMyProg); 

    //This will help to open a new activity within existing TabView 
    //Need to extend ActivityGroup 
    //Need to declare "private ArrayList<View> history;" 
    //Need to Define "this.history = new ArrayList<View>();" within onCreate 
    View MyView = getLocalActivityManager() 
      .startActivity("MyIntent", intMyProg 
      .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)) 
      .getDecorView(); 


    replaceView(MyView); 
} 

public void replaceView(View v) 
{ 
    history.add(v); 
    setContentView(v); 
} 

//@Override 
public void onBackPressed() 
{ 
    String activityName = getLocalActivityManager().getCurrentActivity().toString(); 

    if(activityName.contains("ShowProgress")) 
    { 
     getCurrentActivity().onBackPressed(); 
    } 
    else 
    { 
     Toast.makeText(getApplicationContext(), "Back button from parent Activity", Toast.LENGTH_SHORT).show(); 
     //finish(); 
    } 
} 
} 

Детский активность

public class ShowProgress extends ActivityGroup 
{ 
private ArrayList<View> history; 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.progress); 
    this.history = new ArrayList<View>(); 

    AlertDialog alertDialog = new AlertDialog.Builder(ShowProgress.this.getParent()).create(); 
    alertDialog.setTitle("Hello ..."); 
    alertDialog.setMessage("Hello world this is Anirban !"); 
    alertDialog.setIcon(R.drawable.tick); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      //Toast.makeText(getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    alertDialog.show(); 
} 

//@Override 
public void onBackPressed() 
{ 
    Intent intMyProg = new Intent(this,ProgressActivity.class); 
    View MyView = getLocalActivityManager() 
      .startActivity("MyIntent", intMyProg 
      .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)) 
      .getDecorView(); 

    replaceView(MyView); 
} 

public void replaceView(View v) 
{ 
    history.add(v); 
    setContentView(v); 
} 
} 
+0

вы, вероятно, следует проверить getLocalActivityManager(). GetCurrentActivity() для нулевой (возможно, сначала назначить их переменной). Также: опубликуйте свой logcat – DigCamara

+0

logcat, а проверка null - это не процедура. – Anirban

ответ

2

Поскольку вы получаете вашу ошибку в этой процедуре, самый простой способ избавиться от него было бы изменить его, как этот

//@Override 

public void onBackPressed() 
{ 
    LocalActivityManager localManager = getLocalActivityManager(); 
    Activity currentActivity = null; 
    if (localManager!=null){ 
      currentActivity = localManager.getCurrentActivity(); 
    } 

    String activityName = null; 
    if (currentActivity!=null){ 
     activityName = currentActivity.toString() 
    } 

    if(activityName!=null && (activityName.contains("ShowProgress")) 
    { 
     getCurrentActivity().onBackPressed(); 
    } 
    else 
    { 
     Toast.makeText(getApplicationContext(), "Back button from parent Activity", Toast.LENGTH_SHORT).show(); 
     //finish(); 
    } 
} 
+0

Это работает человек СПАСИБО – Anirban

+1

Добро пожаловать! – DigCamara

+0

снова проголосовали u – Anirban

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