는 기본적으로, 나는이 개 수업을 무엇을하는 것은 OtherClasse.java의 otherClass.java안드로이드
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = getApplicationContext() ;
main_activity = this ;
layout = (LinearLayout) findViewById(R.id.layout);
/*
* Do lot of stuff
*/
}
개요가 필요됩니다의 :
이 클릭 할 수있는 텍스트 뷰가 있습니다. 나는 LongClick 이벤트를 할 때, 나는 (그래서 MyActivity ... UI를 스레드에)
view.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.d("TAG", "OnLongClick");
PopupWindow popup = new PopupWindow(activity.getApplicationContext());
//tried with new PopupWindow(MyActivity.context);
popup.setWindowLayoutMode(150, 150);
popup.setContentView(view);
//view corresponds to the TextView.
popup.showAtLocation(MyActivity.layout, Gravity.CENTER_HORIZONTAL, 10, 10);
return true;
}
});
로그 내가 onLongClick (입력을 나타냅니다) ... PopUpWindow을 표시 할 것 그러나 응용 프로그램 충돌 ...
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
는 그러나 정적의 LinearLayout MyActivity.layout, 그래서 에게 ... 그것으로 다른 클래스의 OnClickListener를에서 PopUpWindow를 표시하는 방법에 대한 어떤 제안을보기를 추가 할 수있을 것입니다 ?
편집:
@Override
public boolean onLongClick(View v) {
PopupWindow popup = new PopupWindow(BlaActivity.context);
TextView tv = new TextView(BlaActivity.context);
LayoutParams para = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(para);
tv.setText("My future text ...");
popup.setContentView(tv);
popup.setWidth(400);
popup.setHeight(180);
popup.showAtLocation(tv, Gravity.CENTER_HORIZONTAL, 10, 10);
popup.update();
return true;
}
가
android.view.WindowManager $ BadTokenException을 반환 창을 추가 할 수 없습니다 - 토큰 null가 유효하지 않습니다; 당신의 활동은 실행 중입니까? TV에서 public IBinder getWindowToken()
-popup.showAtLocation(tv, Gravity.CENTER_HORIZONTAL, 10, 10);
통화가 ... 마녀가 분명 토큰을 ... 없기 때문에
당신이 그 문제를 해결하기 위해 다음 무엇을 제안 할 xml 파일? onLongClick (View v) 'popup.setContentView (v);'의 뷰를 사용해도 ... 나는 아직 IllegalStateException을 가지고있다. –
사실. 난 그냥 PopUpWindow에 displaysomething하려고 ... 나는 또한 전에 만든 textView와 노력, 그것은 작동하지 않습니다 ... 코드가 추가 된 참조하십시오. –
업데이트 된 코드에서 showAtLocation의 부모 인 textview tv를 전달했지만 TV는 이미 팝업의 자식이므로 나를 위해 작동하는 코드로 내 대답을 편집합니다 – triggs