Gus*_*Gus 4 android dialog user-input
我有一个基于SurfaceHolder的View应用程序(类似于Lunar Lander教程).整个GUI在画布上绘制,我希望能够使用自定义布局对话框在给定时刻提示用户文本输入,然后使用标准过程处理并渲染到画布.
然而,我的问题是,最佳做法似乎是从Activity中打开Dialogs.这也没问题,因为我认为我可能会创建一个Handler,然后将其传递给View,而View又可以使用它将来自View视图中的GUI线程的Message传递给Activity,而这又可以获取输入,并发送回复等
问题是,在我打电话后setContentView(R.layout.main),其中包含整个应用程序,我想打电话MyAppView mMyAppView = (MyAppView) findViewById(R.id.app_view_id).
此调用返回null.
什么被认为是最佳做法?我找不到任何好的例子,API正在出现,好吧,并不多.
我很感激这里的任何帮助.
Pen*_*m10 14
创建一个对话框主题活动,以显示当前活动.
public class TextEntryActivity extends Activity {
private EditText et;
/*
* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_entry);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
// title
try {
String s = getIntent().getExtras().getString("title");
if (s.length() > 0) {
this.setTitle(s);
}
} catch (Exception e) {
}
// value
try {
et = ((EditText) findViewById(R.id.txtValue));
et.setText(getIntent().getExtras().getString("value"));
} catch (Exception e) {
}
// button
((Button) findViewById(R.id.btnDone)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
executeDone();
}
});
}
/* (non-Javadoc)
* @see android.app.Activity#onBackPressed()
*/
@Override
public void onBackPressed() {
executeDone();
super.onBackPressed();
}
/**
*
*/
private void executeDone() {
Intent resultIntent = new Intent();
resultIntent.putExtra("value", TextEntryActivity.this.et.getText().toString());
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
发布者:
Intent foo = new Intent(this, TextEntryActivity.class);
foo.putExtra("value", "old value to edit");
this.startActivityForResult(foo, EDIT_ACTION);
Run Code Online (Sandbox Code Playgroud)
然后赶上回应 onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case EDIT_ACTION:
try {
String value = data.getStringExtra("value");
if (value != null && value.length() > 0) {
//do something with value
}
} catch (Exception e) {
}
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
清单定义为:
<activity
android:name=".utils.TextEntryActivity"
android:label="Type in the value"
android:theme="@android:style/Theme.Dialog" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15153 次 |
| 最近记录: |