ポップアップ ウィンドウからアクティビティを呼び出したいのですが、メソッド startActivity() を使用して実行できます。次に、このアクティビティからポップアップ ウィンドウのフィールドに値を渡したいと考えています。
startActivityForResult() を使用して値を渡そうとしていますが、onActivityResult() をオーバーライドできません
これを行うにはどうすればよいですか、これを行う他の方法はありますか?
ポップアップ ウィンドウからアクティビティを呼び出したいのですが、メソッド startActivity() を使用して実行できます。次に、このアクティビティからポップアップ ウィンドウのフィールドに値を渡したいと考えています。
startActivityForResult() を使用して値を渡そうとしていますが、onActivityResult() をオーバーライドできません
これを行うにはどうすればよいですか、これを行う他の方法はありますか?
それで、問題は何ですか?ポップ ウィンドウのクラスの書き方を知りたいですか? 次に、以下のコードが役立つ場合があります。必要に応じて編集しintent
、次のアクティビティ用に記述します。また、Androidのアクティビティ全体でgetintent
データを取得および送信できます。putextra
public 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);
}
}
バンドルを使用して、値を他のアクティビティに渡すことができます。
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));
}
ポップアップ ダイアログ ボックスの代わりに、幅と高さが制限された透明なアクティビティを作成する必要があります。ダイアログボックスのように見えるようにすると、別のアクティビティを開いて値を渡すことができます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" />