【发布时间】:2014-03-29 20:04:07
【问题描述】:
我为此撕毁了我的头发,似乎无法让它发挥作用。我有一个具有列表视图的活动,该列表视图中的单行由三个文本视图和一个图像视图组成。我试图从单行中的一个文本视图中获取所有文本(只有一个),并在单击该项目时将其放入我的自定义对话框的文本视图中。这是我的尝试之一:(当我单击列表视图中的项目时应用程序崩溃)
mListView.setAdapter(adapter);
////Attempting Onclick method \\\\
mListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String txt =((TextView)mListView.findViewById(R.id.title)).getText().toString();
TextView dialogt = (TextView)findViewById(R.id.dialog_text);
dialogt.setText(txt);
confirmEvent();
}
});
如果我要 Toast txt,我会得到正确的响应,但是当我在列表中选择不同的项目时它永远不会改变。它只是永远存储它。 我的 confirmEvent() 方法实际上只是来自 android 开发者网站的自定义方法。但如果我也应该发布它,请告诉我。
/////更新////
当我按照 corsair992 的建议将 mlistview 更改为查看时,Toast 可以工作(请参阅下面的 cmets),但是当我尝试将该数据传输到我的对话框 textview 时,应用程序仍然崩溃。
下面是我的自定义对话框代码:
MyDialogFragment.java
public class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialogb, null));
builder.setMessage(R.string.dialog_Event)
.setPositiveButton(R.string.add_to_cal, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
Toast.makeText(MyDialogFragment.this.getActivity(), "testing", Toast.LENGTH_LONG).show();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
这是我的 confirmEvent 方法,它引用了上面的类:
public void confirmEvent() {
DialogFragment mDialog = new MyDialogFragment();
mDialog.show(getSupportFragmentManager(), "test");
}
////更新///
logcat 数据:
02-26 15:21:39.359:E/AndroidRuntime(746):致命异常:主要 02-26 15:21:39.359: E/AndroidRuntime(746): java.lang.NullPointerException 02-26 15:21:39.359: E/AndroidRuntime(746): at com.wordpress.yourhappening.happening.Homepage$ListViewLoaderTask$1.onItemClick(Homepage.java:229) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.widget.AdapterView.performItemClick(AdapterView.java:284) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.widget.ListView.performItemClick(ListView.java:3382) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.os.Handler.handleCallback(Handler.java:587) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.os.Handler.dispatchMessage(Handler.java:92) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.os.Looper.loop(Looper.java:123) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 java.lang.reflect.Method.invokeNative(Native Method) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 java.lang.reflect.Method.invoke(Method.java:521) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 02-26 15:21:39.359: E/AndroidRuntime(746): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-26 15:21:39.359: E/AndroidRuntime(746): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
尝试将其更改为
view.findViewById()而不是mListView.findViewById()。 -
您使用自定义适配器还是简单的?
-
感谢您的回复,我正在使用一个简单的适配器。当我更改 mListView 以查看 toast 作品时!响应会根据我选择的列表中的哪个项目而变化,就像它应该的一样!!!!但是...如果我试图将数据发送到对话框中的文本视图,它会崩溃。
-
您应该更新您的问题并从您的 logcat 添加例外。
-
发布您的自定义对话框代码
标签: android listview android-listview