所以我试图将textView中的值保存为字符串并发送到另一个活动,其中该值将用于查找位置。所以我使用long和lat。这些值来自使用PHP的MYSQL服务器并正确显示。但是当我尝试去一个新的活动时,我得到一个错误:
尝试调用虚方法' java.lang.CharSequence android.widget.TextView.getText()'在空对象引用上
这是我的代码,以显示我尝试过的错误来自Latit.getText()。toString()和Longit.getText()。toString()
public void goDirect(View v){
TextView Latit = (TextView)findViewById(R.id.tvLatitude);
TextView Longit = (TextView)findViewById(R.id.tvLongitude);
Intent passData = new Intent(getApplicationContext(), testDataPass.class);
passData.putExtra("Latitude",Latit.getText().toString());
passData.putExtra("Longitude", Longit.getText().toString());
startActivity(passData);
}
我也尝试过:
public void goDirect(View v){
TextView Latit = (TextView)findViewById(R.id.tvLatitude);
TextView Longit = (TextView)findViewById(R.id.tvLongitude);
String Lat = Latit.getText().toString();
String Lon = Longit.getText().toString();
Intent passData = new Intent(getApplicationContext(), testDataPass.class);
passData.putExtra("Latitude",Lat);
passData.putExtra("Longitude", Lon);
startActivity(passData);
}
两者在同一个地方都给出了同样的错误,我已经做过类似的事情用于其他用途但这次无法让它工作。我环顾四周,其他类似的问题/答案没有帮助。所以任何帮助都将不胜感激。
答案 0 :(得分:0)
当您为视图(onCreateView()
)充气时,您可以致电
TextView Latit = (TextView) yourInflatedView.findViewById(R.id.tvLatitude);
您获得的错误意味着无法找到视图,或者在初始化视图之前调用getText()
。
答案 1 :(得分:0)
首先,我建议你像这样构建你的活动。您的TextView现在在创建活动后立即初始化,并且具有额外的好处,即将所有视图声明放在相同的位置,并在应用程序中以各种功能点缀其他好处。
在此之后,你在getText()上获得null的唯一原因是因为找不到你引用的TextView。您需要为您的活动进入XML并确保您拥有带有ID的TextView:“@ + id / tvLatitude”&经度相同
package my.package;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
private TextView Latit;
private TextView Longit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Latit = (TextView)findViewById(R.id.tvLatitude);
Longit = (TextView)findViewById(R.id.tvLongitude);
//Presume you are using an XML based OnClick
}
public void goDirect(View v){
Intent passData = new Intent(getApplicationContext(), testDataPass.class);
passData.putExtra("Latitude",Latit.getText().toString());
passData.putExtra("Longitude", Longit.getText().toString());
startActivity(passData);
}
}
答案 2 :(得分:0)
您有错误,因为您的textView不存在或未在您的活动中调用
如果你的View v有这个textView,你需要这样做:
public void goDirect(View v){
TextView Latit = (TextView)v.findViewById(R.id.tvLatitude);
TextView Longit = (TextView)v.findViewById(R.id.tvLongitude);
String Lat = Latit.getText().toString();
String Lon = Longit.getText().toString();
Intent passData = new Intent(activity.context, testDataPass.class);
Bundle bundle = new Bundle();
bundle.putString("Latitude",Latit.getText().toString());
bundle.putString("Longitude", Longit.getText().toString());
passData.putExtras(bundle);
startActivity(passData);
}
并访问testDataPass活动中的数据
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
//you have data
String Latitude = bundle.getString("Latitude");
String Longitude = bundle.getString("Longitude");
}else{
//you dont have data
}