最近在测试android文件读写的时候遇到的一个问题:findviewbyid()方法总是返回null.
先贴源代码:
主activity:
package com.android.file;import java.io.FileNotFoundException;
import java.io.IOException;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import com.android.filecontrol.FileService;public class AndroidfileActivity extends Activity {
/** Called when the activity is first created. */
private Button saveBtn, getBtn; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
saveBtn = (Button) findViewById(R.id.button1);
getBtn = (Button) findViewById(R.id.button2);
saveBtn.setOnClickListener(onclick);
getBtn.setOnClickListener(onclick);
} public OnClickListener onclick = new OnClickListener() {
FileService fileService = new FileService();
EditText editfileEditText = (EditText) findViewById(R.id.edittext1);
EditText editcontentEditText = (EditText) findViewById(R.id.edittext2);
TextView textview = (TextView)findViewById(R.id.textresult);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
try {
fileService.WriteFile(AndroidfileActivity.this.openFileOutput(
editfileEditText.getText().toString(), MODE_APPEND),
editcontentEditText.getText().toString());
Toast.makeText(AndroidfileActivity.this, "保存成功!", Toast.LENGTH_LONG);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.button2:
try {
String contentString = fileService.ReadFile(AndroidfileActivity.this.openFileInput(editfileEditText.getText().toString()));
textview.setText(contentString);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
};
}layout下的main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android1="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文件名"
/>
<EditText
android:id="@+id/edittext1"
android:layout_width="330dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/textView1"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/textView1"
android:layout_weight="0.10"
/> <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1"
android:text="内容" />
<EditText
android:id="@+id/edittext2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/textView2"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1"
android:layout_toRightOf="@+id/textView1"
android:inputType="textPostalAddress" /> <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText2"
android:layout_marginTop="16dp"
android:text="保存" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/button1"
android:text="获取" />
<TextView
android:id="@+id/textresult"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
/>
</RelativeLayout>
还有R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/package com.android.file;public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button1=0x7f050005;
public static final int button2=0x7f050007;
public static final int editText1=0x7f050003;
public static final int editText2=0x7f050006;
public static final int edittext1=0x7f050001;
public static final int edittext2=0x7f050004;
public static final int textView1=0x7f050000;
public static final int textView2=0x7f050002;
public static final int textresult=0x7f050008;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}错误:
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.os.Handler.dispatchMessage(Handler.java:99)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.os.Looper.loop(Looper.java:123)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.reflect.Method.invokeNative(Native Method)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.reflect.Method.invoke(Method.java:507)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-27 09:20:39.828: E/AndroidRuntime(342): at dalvik.system.NativeStart.main(Native Method)
11-27 09:20:39.828: E/AndroidRuntime(342): Caused by: java.lang.NullPointerException
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.Activity.findViewById(Activity.java:1647)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.file.AndroidfileActivity$1.<init>(AndroidfileActivity.java:36)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.file.AndroidfileActivity.<init>(AndroidfileActivity.java:34)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.Class.newInstanceImpl(Native Method)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.Class.newInstance(Class.java:1409)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
11-27 09:20:39.828: E/AndroidRuntime(342): ... 11 more我在网上搜了很多资料,说错误的原因大概有两种:
1.findviewbyid()方法用在setcontentview()方法之前。我仔细查看了代码排除了这个原因。
2.clean工程然后重建工程。试了无数遍还是不行,最后把工程全部删了之后重新建了一个工程把代码copy进去之后问题依然如故。
希望遇到过此问题的大虾们给点建议,我记得之前曾经遇到过这个问题,当时以为是R.java文件没有同步,就把main.xml里面的东西删掉重新写了一遍就好了,但这次不管用了。
另外代码里面还有其他的控件比如button的获取就没有问题,为什么偏偏EditView就不行了?
先贴源代码:
主activity:
package com.android.file;import java.io.FileNotFoundException;
import java.io.IOException;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import com.android.filecontrol.FileService;public class AndroidfileActivity extends Activity {
/** Called when the activity is first created. */
private Button saveBtn, getBtn; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
saveBtn = (Button) findViewById(R.id.button1);
getBtn = (Button) findViewById(R.id.button2);
saveBtn.setOnClickListener(onclick);
getBtn.setOnClickListener(onclick);
} public OnClickListener onclick = new OnClickListener() {
FileService fileService = new FileService();
EditText editfileEditText = (EditText) findViewById(R.id.edittext1);
EditText editcontentEditText = (EditText) findViewById(R.id.edittext2);
TextView textview = (TextView)findViewById(R.id.textresult);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
try {
fileService.WriteFile(AndroidfileActivity.this.openFileOutput(
editfileEditText.getText().toString(), MODE_APPEND),
editcontentEditText.getText().toString());
Toast.makeText(AndroidfileActivity.this, "保存成功!", Toast.LENGTH_LONG);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.button2:
try {
String contentString = fileService.ReadFile(AndroidfileActivity.this.openFileInput(editfileEditText.getText().toString()));
textview.setText(contentString);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
};
}layout下的main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android1="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文件名"
/>
<EditText
android:id="@+id/edittext1"
android:layout_width="330dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/textView1"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/textView1"
android:layout_weight="0.10"
/> <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1"
android:text="内容" />
<EditText
android:id="@+id/edittext2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/textView2"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1"
android:layout_toRightOf="@+id/textView1"
android:inputType="textPostalAddress" /> <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText2"
android:layout_marginTop="16dp"
android:text="保存" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/button1"
android:text="获取" />
<TextView
android:id="@+id/textresult"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
/>
</RelativeLayout>
还有R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/package com.android.file;public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button1=0x7f050005;
public static final int button2=0x7f050007;
public static final int editText1=0x7f050003;
public static final int editText2=0x7f050006;
public static final int edittext1=0x7f050001;
public static final int edittext2=0x7f050004;
public static final int textView1=0x7f050000;
public static final int textView2=0x7f050002;
public static final int textresult=0x7f050008;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}错误:
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.os.Handler.dispatchMessage(Handler.java:99)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.os.Looper.loop(Looper.java:123)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.reflect.Method.invokeNative(Native Method)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.reflect.Method.invoke(Method.java:507)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-27 09:20:39.828: E/AndroidRuntime(342): at dalvik.system.NativeStart.main(Native Method)
11-27 09:20:39.828: E/AndroidRuntime(342): Caused by: java.lang.NullPointerException
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.Activity.findViewById(Activity.java:1647)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.file.AndroidfileActivity$1.<init>(AndroidfileActivity.java:36)
11-27 09:20:39.828: E/AndroidRuntime(342): at com.android.file.AndroidfileActivity.<init>(AndroidfileActivity.java:34)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.Class.newInstanceImpl(Native Method)
11-27 09:20:39.828: E/AndroidRuntime(342): at java.lang.Class.newInstance(Class.java:1409)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
11-27 09:20:39.828: E/AndroidRuntime(342): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
11-27 09:20:39.828: E/AndroidRuntime(342): ... 11 more我在网上搜了很多资料,说错误的原因大概有两种:
1.findviewbyid()方法用在setcontentview()方法之前。我仔细查看了代码排除了这个原因。
2.clean工程然后重建工程。试了无数遍还是不行,最后把工程全部删了之后重新建了一个工程把代码copy进去之后问题依然如故。
希望遇到过此问题的大虾们给点建议,我记得之前曾经遇到过这个问题,当时以为是R.java文件没有同步,就把main.xml里面的东西删掉重新写了一遍就好了,但这次不管用了。
另外代码里面还有其他的控件比如button的获取就没有问题,为什么偏偏EditView就不行了?
解决方案 »
- 请教:使用NDK,是否可以调用Linux系统调用
- 有关摄像头开启后页面问题,自己已经找到原因了,有没有人进来回复一下,我好结帖~~~~~
- 在Android中如何实现给录制的声音添加背景音乐
- Camera 问题
- android4.0 WebView显示为乱码的问题
- 怎么根据经度纬度取得时区
- prelink-linux-arm.map这个文件谁能分析下他的作用?
- 问个java import相关的基础知识问题
- android textView复制功能或者提供类似的用法
- 每次用 Android Studio打开做好的项目却老是没有显示JAVA目录,
- 如何实现关机和重启
- 在android音乐播放器中如何获得专辑封面,急!!!
EditText editfileEditText = (EditText) AndroidfileActivity.this.findViewById(R.id.edittext1);你把你那句改成这样子试试
editfileEditText = (EditText) AndroidfileActivity.this.findViewById(R.id.edittext1);你把上面那一句还是放在onCreate()函数中 并且在AndroidfileActivity 类中设置成员变量 EditText editfileEditText 这样做你在那个内部类用editfileEditText 就不是null了 你这个EditText editcontentEditText也需要改一下
还有谢谢你的建议!我也是第一次在android区发帖求助。