1

現在、私はそうのように、Linear Layout内、ボタンを持っています。ボタンをクリックするとPopupWindowが表示されますか?</p> ​​ <p>私も(ボタンがクリックされたときに実際に実行しない)createPopup拡張子を持っている:

public void createPopup(View view) { 

} 

私はその中にTextViewPopupWindowを作成しようとしました。私はshowAtLocation(parent, gravity, x, y)を呼び出しました。parentはルートLinearLayoutです。 gravityは,xおよびyであり、いずれも10であった。

ボタンをクリックすると、showAtLocation()と表示されたIllegalStateExceptionエラーが発生しました。ここでcreatePopup()機能は次のとおりです。

PopupWindow popUp; 
LinearLayout layout; 
LinearLayout main; 
TextView value; 
LayoutParams params; 
boolean click = true; 
public void createPopup(View view) { 
    popUp = new PopupWindow(this); 
    layout = new LinearLayout(this); 
    main = (LinearLayout) findViewById(R.id.parent); 
    value = new TextView(this); 
    if(click) { 
     popUp.showAtLocation(main, Gravity.BOTTOM, 10, 10); 
     popUp.update(50, 50, 300, 80); 
     click = false; 
    } else { 
     popUp.dismiss(); 
     click = true; 
    } 
    params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    value.setText(R.string.message); 
    layout.addView(value, params); 
    popUp.setContentView(layout); 
    setContentView(main); 
    TextView status = (TextView) findViewById(R.id.status); 
    status.setTextSize(28); 
    status.setText("Status of Popup: Don't worry, you're never going to get this."); 
} 

私が知りたいのですがどのようなものです:

  • そのエラーが何を意味するのでしょうか?
  • なぜ表示されますか?
  • どうすれば修正できますか?
  • 私はボタンをクリックするだけで表示され、簡単なポップアップウィンドウをどのように作成するのですか?*

私はそれは次のようになり少なくとも1つのパラメータを(取る関数を作成できるようにしたいと思います* a String)を作成してから、Stringを含むポップアップウィンドウと、ポップアップウィンドウを閉じるボタンを作成します。

EDIT:これは、ポップアップの問題に接続されているかどうかわからないが、私はアプリを実行したとき、私はこのエラーを取得する:

07-13 19:51:48.448 133-133/? E/[EGL-ERROR]: egl_image* _egl_create_image_ANDROID_native_buffer(egl_display*, egl_context*, EGLClientBuffer, EGLint*, void*):593: CHUN try create image with crop 0,0,0,0 


              [ 07-13 19:51:48.448 133: 133 E/   ] 
              CHUN map external image rgb 1024 x 600 

SECOND EDIT:私は上記の関連するコードを追加しました。

+0

エラーの完全なスタックトレースを投稿してください。エラーメッセージも含めて、重要です。 – JoxTraex

+0

私はそれを再現できるかどうかわかりませんが、試してみることができます。 –

+0

何が起こっているかを理解するのに非常に役立つ、エラーを出すときには、5つの完全なスタックトレースを確認してください。 – JoxTraex

答えて

2

ダイアログを実装する方法を見ているなら、私が通常行っているのは、別のレイアウトファイル、クラスファイルを作成し、それを表示する必要がある場所から呼び出すことです。ダイアログは中央の他のアクティビティに表示され、私が知る限り移動できません。ダイアログを表示したい場合は

、あなたが呼び出すことができます。

private void openMyDialog() { 
    MyDialog dialog = new MyDialog(this); 
    dialog.show(); 
} 

MyDialog.javaはDialogを拡張し、android.view.View.OnClickListenerを実装する必要があります。レイアウト上の要素を保存または制御するために必要なコードが含まれています。 MyDialog.java:

import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.EditText; 

public class MyDialog extends Dialog implements android.view.View.OnClickListener { 

    public Activity activity; 

    public MyDialog() { 
     super(null); 
    } 
    public MyDialog(Activity activity) { 
     super(activity); 
     this.activity = activity; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.my_dialog); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      default: 
       break; 
     } 
     dismiss(); 
    } 

} 

my_dialog.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#1C1C1C"> 
<!-- Whatever your layout will consist of can go here --> 

</RelativeLayout> 

私はこれがあなたの質問に答える願っています。そうでない場合は、この投稿にコメントしてください。あなたのエラーを修正する方法はわかりません(完全なエラーではありません)が、私はカスタムダイアログ(またはポップアップ)を実装して他のアクティビティを実行する方法を知っています。

+0

お返事ありがとうございます。私はあなたのソリューションを試しています、そして、私は戻って、それがどのようにドキュメントで動作するのかの詳細を見ていきます。使用しているインポートステートメントを追加できますか? –

+0

私はすべての必要なものを貼り付けたと思う...私はあなたが必要としない他のもののための他の輸入の束を持っている大きなファイルからこれをコピーしました。あなたに他の質問があれば教えてください! – TheAnonymous010

+0

18行目で 'this.activity = activity'と書かれています。 Android Studioは解決できないと私に伝えています。 'this.setOwnerActivity(activity)'をやっているのですか? –

関連する問題