Java Android更改文本查看文本
我被这些问题困扰了好几天,我不知道我的问题是什么。我现在真的需要一些帮助,我可以在这里帮助我。这是我的密码Java Android更改文本查看文本,java,android,Java,Android,我被这些问题困扰了好几天,我不知道我的问题是什么。我现在真的需要一些帮助,我可以在这里帮助我。这是我的密码 public class MainActivity extends AppCompatActivity implements LocationListener { TextView text; String trip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(s
public class MainActivity extends AppCompatActivity implements LocationListener {
TextView text;
String trip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.id_trip);
scheduleAlarm();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){
}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
public void onLocationChanged(Location location) {
new MyAsyncTask ().execute();
}
public class MyAsyncTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... arg0) {
trip = "Hai";
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {
text.setText(trip);
}
}
public void scheduleAlarm() {
Intent intent = new Intent(getApplicationContext(), Track.class);
final PendingIntent pIntent = PendingIntent.getBroadcast(this, Track.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 60 * 1000, pIntent);
}
}
田径课
public class Track extends BroadcastReceiver {
public static final int REQUEST_CODE = 12345;
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, Services.class);
context.startService(i);
}}
错误是:
java.lang.NullPointerException:尝试调用虚拟方法
空值上的“android.view.view android.view.Window.findViewById(int)”
对象引用
谢谢您正在从doInBackground返回
null
值,这就是您获得NullPointerException
的原因
使用以下代码更改MyAsyncTask
代码
public class MyAsyncTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
if(text==null){
text = MainActivity.this.findViewById(R.id.id_trip);
}
}
@Override
protected String doInBackground(String... arg0) {
trip = "Hai";
return trip;
}
@Override
protected void onPostExecute(String strFromDoInBg) {
text.setText(strFromDoInBg);
}
}
公共类MyAsyncTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
if(text==null){
text=MainActivity.this.findViewById(R.id.id\u行程);
}
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
trip=“海”;
回程;
}
@凌驾
受保护的void onPostExecute(字符串strFromDoInBg){
text.setText(strFromDoInBg);
}
}
以下是您的错误:
TextView text = (TextView) main.findViewById(R.id.id_trip);
text.setText(string);
您无法从
服务
获取类似于此的文本视图
对象。将TextView
对象创建为静态对象,或使用BroadcastReceiver
从setText(String str)
method中删除以下两行
MainActivity main = new MainActivity();
TextView text = (TextView) main.findViewById(R.id.id_trip);
希望这会对您有所帮助。请提供完整的日志问题解决在文本视图中添加静态的问题好的,但在发布的代码中,
setText
在服务
类中从未调用过?那么你怎么可能得到那个错误呢?我没有使用设置文本I'm Services类。
MainActivity main = new MainActivity();
TextView text = (TextView) main.findViewById(R.id.id_trip);