作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我编写了一个自定义对话框并尝试从其父 Activity 中获取一些数据,但是当我调用 getOwnerActivity 时我总是得到 null,谁能告诉我为什么会这样?为什么在DemoDialog中可以显示数据,而在TestDialogActivity中显示数据失败?
非常感谢。
DialogTestActivity
public class DialogTestActivity extends Activity {
List<String> data = new ArrayList<String>();
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
showDialog(0);
}
});
}
public List<String> getData(){
data.add("one");
data.add("two");
data.add("three");
return data;
}
public Dialog onCreateDialog(int id){
return new DemoDialog(this);
}
}
演示对话框
public class DemoDialog extends Dialog {
Context context;
public DemoDialog(Context context) {
super(context);
setContentView(R.layout.dialog);
this.context = context;
setTitle("Delete City");
ListView list = (ListView)findViewById(R.id.list);
ArrayAdapter<String> aa = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, ((DialogTestActivity)getOwnerActivity()).getData());
// ArrayAdapter<String> aa = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, getData());
list.setAdapter(aa);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("1");
data.add("2");
return data;
}
}
最佳答案
我尝试在我的自定义对话框
的所有可能方法中使用getOwnerActivity()
方法。它总是返回 null (Android 2.3)。然后我检查了它的源代码,它返回的 Activity 只在 setOwnerActivity(Activity activity)
中设置,它不会在任何地方调用。因此,如果您希望 getOwnerActivity()
返回不同于 null 的值,您必须这样做:
public MyCustomDialog(Context context) {
super(context);
if (context instanceof Activity) {
setOwnerActivity((Activity) context);
}
}
关于android - getOwnerActivity 在自定义对话框中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543167/
我编写了一个自定义对话框并尝试从其父 Activity 中获取一些数据,但是当我调用 getOwnerActivity 时我总是得到 null,谁能告诉我为什么会这样?为什么在DemoDialog中可
我创建了一个简单的自定义对话框类。在进一步的代码中,我想运行新的 Intent: Intent intent = new Intent(android.content.Intent.ACTION_V
我是一名优秀的程序员,十分优秀!