5 탭이있는 탭 뷰가 있습니다. 각 탭마다 하나의 액티비티입니다. 하나의 탭에서 경고를 여는 새 액티비티가 열립니다. 이제 모든 것이 작동합니다. 벌금.getLocalActivityManager()에서 nullpointer 예외가 발생했습니다. getCurrentActivity()
내 문제는 (Back button press)에서 돌아 오는 것입니다. 그 자식 활동은 부모 활동입니다. 따라서 하위 활동에서 뒤로 버튼을 누르면 활동 이름 getLocalActivityManager().getCurrentActivity().toString()
을 확인하고 있습니다. getLocalActivityManager().getCurrentActivity().toString()
을 사용하여 활동 이름을 확인합니다.
하지만 부모 작업에서 뒤로 버튼을 누르면 NullPointer 예외가 발생합니다. 부모 활동에서
로그 캣 오류
학부모 활동
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();
}
}
}
아동 활동
를 호출 할 때getLocalActivityManager().getCurrentActivity().toString()
작동하지 않을 수 있음 이 절차에 오류가 발생하고 있기 때문에
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