Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中设置片段中的文本_Java_Android_Android Fragments - Fatal编程技术网

Java 在Android中设置片段中的文本

Java 在Android中设置片段中的文本,java,android,android-fragments,Java,Android,Android Fragments,我有一个方法可以将片段中的文本字段重置为“”。当一切都处于活动状态时,这种方法效果很好。问题是,((EditText)v.findviewbyd(R.id.edAreaxml)).setText(“”) 片段代码为: public class DataEdit extends Fragment implements OnClickListener { public View onCreateView(LayoutInflater inflater, ViewGroup containe

我有一个方法可以将片段中的文本字段重置为“”。当一切都处于活动状态时,这种方法效果很好。问题是,
((EditText)v.findviewbyd(R.id.edAreaxml)).setText(“”)

片段代码为:

public class DataEdit extends Fragment implements OnClickListener {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.dataedit, container, false);
        Button btnResetForm = (Button) v.findViewById(R.id.btnResetFormxml);
        btnResetForm.setOnClickListener(this);
        return v;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btnResetFormxml:
            resetForm(v);
            break;
        }
    }
    public void resetForm(View v) {
        ((EditText) v.findViewById(R.id.edAreaxml)).setText(""); //THIS IS THE PROBLEM  
    }
XML:

Logcat是:

03-21 09:35:20.735: E/Trace(1013): error opening trace file: No such file or directory (2)
03-21 09:35:21.795: D/gralloc_goldfish(1013): Emulator without GPU emulation detected.
03-21 09:35:22.425: I/Choreographer(1013): Skipped 48 frames!  The application may be doing too much work on its main thread.
03-21 09:35:25.805: I/Choreographer(1013): Skipped 71 frames!  The application may be doing too much work on its main thread.
03-21 09:35:28.254: D/AndroidRuntime(1013): Shutting down VM
03-21 09:35:28.254: W/dalvikvm(1013): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-21 09:35:28.294: E/AndroidRuntime(1013): FATAL EXCEPTION: main
03-21 09:35:28.294: E/AndroidRuntime(1013): java.lang.NullPointerException
03-21 09:35:28.294: E/AndroidRuntime(1013):     at net.JonesInc.streamwalker.DataEdit.resetForm(DataEdit.java:139)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at net.JonesInc.streamwalker.DataEdit.onClick(DataEdit.java:74)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at android.view.View.performClick(View.java:4084)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at android.view.View$PerformClick.run(View.java:16966)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at android.os.Handler.handleCallback(Handler.java:615)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at android.os.Looper.loop(Looper.java:137)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at android.app.ActivityThread.main(ActivityThread.java:4745)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at java.lang.reflect.Method.invokeNative(Native Method)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at java.lang.reflect.Method.invoke(Method.java:511)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-21 09:35:28.294: E/AndroidRuntime(1013):     at dalvik.system.NativeStart.main(Native Method)
03-21 09:35:32.204: I/Process(1013): Sending signal. PID: 1013 SIG: 9

假设它属于
dataedit.xml
,则初始化
EditText
,如下所示

EditText ed;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dataedit, container, false);
    ed =(EditText)v.findViewById(R.id.edArea);
    Button btnResetForm = (Button) v.findViewById(R.id.btnResetFormxml);
    btnResetForm.setOnClickListener(this);
    return v;
}
然后

然后


尝试将本地变量初始化为:

EditText editText;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dataedit, container, false);
    Button btnResetForm = (Button) v.findViewById(R.id.btnResetFormxml);
    btnResetForm.setOnClickListener(this);
    editText = (EditText) v.findViewById(R.id.edArea);
    return v;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btnResetFormxml:
            resetForm();
            break;
    }
}

public void resetForm() {             
    editText.setText(""); 
}  
这样,您的
resetForm
方法就不需要查看参数。

问题是
public void onClick(视图v)
其中v是按钮。 试着把

Button btnResetForm = (Button) v.findViewById(R.id.btnResetFormxml);
et = (EditText)v.findViewById(R.id.edArea);
定义

EditText et;
作为片段的属性。 之后你可以使用

public void resetForm(View v) {             
    et.setText("");  
}

edittext属于片段,因此必须在onCreateViewGot中初始化它。谢谢祝大家周末愉快。@portsample不应通过编辑答案发布更新。你仍然有NPE因为你没有跟随我的帖子properly@Raghunandan,根据提供的答案发布修订代码的适当位置在哪里?谢谢。@portsample您试图编辑我的帖子,您添加了更新,社区在审阅后拒绝了它。通过编辑您的问题发布更新。@Raghunandan,谢谢您的澄清。编辑你的文章不是故意的。在意识到我在错误的位置进行了编辑后,我无法删除这些编辑。我道歉。
EditText editText;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dataedit, container, false);
    Button btnResetForm = (Button) v.findViewById(R.id.btnResetFormxml);
    btnResetForm.setOnClickListener(this);
    editText = (EditText) v.findViewById(R.id.edArea);
    return v;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btnResetFormxml:
            resetForm();
            break;
    }
}

public void resetForm() {             
    editText.setText(""); 
}  
Button btnResetForm = (Button) v.findViewById(R.id.btnResetFormxml);
et = (EditText)v.findViewById(R.id.edArea);
EditText et;
public void resetForm(View v) {             
    et.setText("");  
}