У меня есть табуляция, которая имеет 5 tab.Each и каждый из них - одно действие. На одной вкладке открывается новая активность, открывающая предупреждение. Теперь все работает хорошо.получение исключения nullpointer на getLocalActivityManager(). GetCurrentActivity()
Моя проблема в том, когда я возвращаюсь с (кнопка «Назад»), что дочерняя активность вызывает onBackPressed из ее родительской активности, поэтому я проверяю имя активности getLocalActivityManager().getCurrentActivity().toString()
, она также работает, когда я нажимаю кнопку «Назад» из дочерней активности, Он проверяет имя активности, используя getLocalActivityManager().getCurrentActivity().toString()
.
Но когда я нажимаю кнопку «Назад» из моей родительской активности, она дает исключение NullPointer. Может быть getLocalActivityManager().getCurrentActivity().toString()
не работает при вызове из родительской активности
LogCat Ошибка
Родитель активность
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);
}
}
вы, вероятно, следует проверить getLocalActivityManager(). GetCurrentActivity() для нулевой (возможно, сначала назначить их переменной). Также: опубликуйте свой logcat – DigCamara
logcat, а проверка null - это не процедура. – Anirban