1

ポップアップ ウィンドウからアクティビティを呼び出したいのですが、メソッド startActivity() を使用して実行できます。次に、このアクティビティからポップアップ ウィンドウのフィールドに値を渡したいと考えています。

startActivityForResult() を使用して値を渡そうとしていますが、onActivityResult() をオーバーライドできません

これを行うにはどうすればよいですか、これを行う他の方法はありますか?

4

3 に答える 3

1

それで、問題は何ですか?ポップ ウィンドウのクラスの書き方を知りたいですか? 次に、以下のコードが役立つ場合があります。必要に応じて編集しintent、次のアクティビティ用に記述します。また、Androidのアクティビティ全体でgetintentデータを取得および送信できます。putextrapublic class ShowPopUp extends Activity {

PopupWindow popUp;
LinearLayout layout;
TextView tv;
LayoutParams params;
LinearLayout mainLayout;
Button but;
boolean click = true;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    popUp = new PopupWindow(this);
    layout = new LinearLayout(this);
    mainLayout = new LinearLayout(this);
    tv = new TextView(this);
    but = new Button(this);
    but.setText("Click Me");
    but.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if (click) {
                popUp.showAtLocation(mainLayout, 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);
    tv.setText("Hi this is a sample text for popup window");
    layout.addView(tv, params);
    popUp.setContentView(layout);
    // popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10);
    mainLayout.addView(but, params);
    setContentView(mainLayout);
}

}

于 2013-09-04T05:56:36.800 に答える
0

バンドルを使用して、値を他のアクティビティに渡すことができます。

Intent intent = new Intent(this, SomeActivity.class);
intent.putExtra("someKey", 50);
startActivity(intent);

次に、次のようにして「SomeActivity」クラスで受け取ります。

Bundle extras = getIntent().getExtras();
if(extras.containsKey("someKey")){
   int defaultValue = -1;
   Log.d("Magic!", "My bundled extra: " + extras.getInt("someKey", defaultValue)); 
}
于 2013-09-04T05:57:10.507 に答える
0

ポップアップ ダイアログ ボックスの代わりに、幅と高さが制限された透明なアクティビティを作成する必要があります。ダイアログボックスのように見えるようにすると、別のアクティビティを開いて値を渡すことができますintent.putExtra()

このようにすれば、 と も使えるようにstartActivityForResult() なりonActivityResult()ます。

public class PopupWindowActivity extends Activity {

PopupWindow popwindow;
Button btnpopupopener,btnOpenActicivt;
TextView tv_result;
final static int POPRESULTcode=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_popup_window);

    btnpopupopener=(Button)findViewById(R.id.btnpopupopen);
    btnpopupopener.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            LayoutInflater inflator= (LayoutInflater)PopupWindowActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            LinearLayout vi=(LinearLayout)inflator.inflate(R.layout.layout_popup_content, null);
            btnOpenActicivt= (Button)vi.findViewById(R.id.btnOpenActivity);
            tv_result=(TextView)vi.findViewById(R.id.tv_result);


            popwindow = new PopupWindow(vi, LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            popwindow.setContentView(vi);

            btnOpenActicivt.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent in= new Intent(PopupWindowActivity.this, SampleResultActivity.class);
                    startActivityForResult(in, POPRESULTcode);

                }
            });

            popwindow.showAsDropDown(btnpopupopener);

        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    switch(resultCode){
    case POPRESULTcode:
            Log.i("Result"," Getting Message From Result Activity");

            tv_result.setText(data.getExtras().getString("resultstring"));
            popwindow.showAsDropDown(btnpopupopener);
        break;
    }

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.popup_window, menu);
    return true;
}


public class SampleResultActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sample_result);

    Intent in= new Intent(getApplicationContext(), PopupWindowActivity.class);
    in.putExtra("resultstring", "Sending Sample String as Data");
    setResult(1, in);
    finish();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.sample_result, menu);
    return true;
}

}

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

<Button
    android:id="@+id/btnpopupopen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="24dp"
    android:text="Open Popup" />

popupWindow レイアウト

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
    android:id="@+id/btnOpenActivity"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Go To next Activity Get Result back" />

<TextView
    android:id="@+id/tv_result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="View Result Here"
    android:textAppearance="?android:attr/textAppearanceLarge" />

于 2013-09-04T06:02:12.443 に答える