大家好,祝大家节日快乐。
这是我遇到的问题: 我在这里使用mrKlar的PagedDragDrop设置了一个GridView:https://github.com/mrKlar/PagedDragDropGrid
我正在努力使其不是在每个项目下面预先确定的文本,而是用户可以选择在其下面输入文本。要做到这一点,我最初的想法是编辑Item.java文件,使其输出EditText而不是字符串。所以这就是我最终的结果(您可以将它与上面github链接中的原始Item.java文件进行比较):
package com.example.startingeleven;
import android.widget.EditText;
public class Item {
private long id;
private EditText name;
private int drawable;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name.getText().toString();
}
public void setName(EditText name) {
this.name = name;
}
public int getDrawable() {
return drawable;
}
public void setDrawable(int drawable) {
this.drawable = drawable;
}
public Item(long id, EditText name, int drawable) {
super();
this.id = id;
this.name = name;
this.drawable = drawable;
}
}
这是我认为与此相关的主ExamplePagedDragDropGridAdapter文件中的代码区域
public class ExamplePagedDragDropGridAdapter extends Activity implements PagedDragDropGridAdapter {
private Context context;
private PagedDragDropGrid gridview;
List<Page> pages = new ArrayList<Page>();
public ExamplePagedDragDropGridAdapter(Context context, PagedDragDropGrid gridview) {
super();
this.context = context;
this.gridview = gridview;
EditText striker1 = (EditText)findViewById(R.id.striker1);
Page page1 = new Page();
List<Item> items = new ArrayList<Item>();
items.add(new Item(1, striker1, R.drawable.jersey));
page1.setItems(items);
pages.add(page1);
}
这是显示错误的LogCat:
12-23 23:55:10.315: E/AndroidRuntime(1622): FATAL EXCEPTION: main
12-23 23:55:10.315: E/AndroidRuntime(1622): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.startingeleven/com.example.startingeleven.FieldActivity}: java.lang.NullPointerException
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.os.Handler.dispatchMessage(Handler.java:99)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.os.Looper.loop(Looper.java:137)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.ActivityThread.main(ActivityThread.java:5103)
12-23 23:55:10.315: E/AndroidRuntime(1622): at java.lang.reflect.Method.invokeNative(Native Method)
12-23 23:55:10.315: E/AndroidRuntime(1622): at java.lang.reflect.Method.invoke(Method.java:525)
12-23 23:55:10.315: E/AndroidRuntime(1622): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-23 23:55:10.315: E/AndroidRuntime(1622): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-23 23:55:10.315: E/AndroidRuntime(1622): at dalvik.system.NativeStart.main(Native Method)
12-23 23:55:10.315: E/AndroidRuntime(1622): Caused by: java.lang.NullPointerException
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.Activity.findViewById(Activity.java:1853)
12-23 23:55:10.315: E/AndroidRuntime(1622): at com.example.startingeleven.ExamplePagedDragDropGridAdapter.<init>(ExamplePagedDragDropGridAdapter.java:63)
12-23 23:55:10.315: E/AndroidRuntime(1622): at com.example.startingeleven.FieldActivity.onCreate(FieldActivity.java:29)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.Activity.performCreate(Activity.java:5133)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-23 23:55:10.315: E/AndroidRuntime(1622): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
12-23 23:55:10.315: E/AndroidRuntime(1622): ... 11 more
12-23 23:55:46.794: I/Process(1622): Sending signal. PID: 1622 SIG: 9
我是否在正确的轨道上编辑项目文件以使EditText显示在项目下方?我有一种感觉,这可能是很多要求解决方案,但然后再次我不是Android编程中最知识的大声笑。无论哪种方式,对此问题的任何修复都非常感谢,请询问您是否需要更多信息。
感谢。
答案 0 :(得分:0)
EditText striker1 = (EditText)findViewById(R.id.striker1);
您没有给布局充气。 findViewById
在当前的infalted布局中查找id为id的视图。由于您没有夸大布局并尝试初始化edittext,因此您获得了NullPointerException
答案 1 :(得分:0)
您只需要首先夸大您定义编辑文本的布局,即striker1,然后从该布局调用findviewbyid,您将获得edittext实例..!
这是你真正需要做的: -
View layout = inflater.inflate(R.layout.your_xml_layout,
null);
EditText striker1 = (EditText)layout.findViewById(R.id.striker1);
注意
这里R.layout.your_xml_layout:是你用你的id定义你的edittext的布局文件,即striker1。
试试吧..!