私は5つのタブを持つタブビューを持っています.それぞれが単一のアクティビティです.1つのタブでは、アラートを開く新しいアクティビティを開いています.今まではすべて正常に動作しています.
私の問題は、親アクティビティの onBackPressed を呼び出している子アクティビティ ([戻る] ボタンを押す) から戻ってきたときです。そのため、子アクティビティから [戻る] ボタンを押しgetLocalActivityManager().getCurrentActivity().toString()
ているときにも動作するアクティビティ名を確認しています。アクティビティ名を確認します。を使用してgetLocalActivityManager().getCurrentActivity().toString()
。
しかし、親アクティビティから戻るボタンを押すと、NullPointer Exception が発生します。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);
}
}