将TextView保存到String并将值发送到另一个活动

时间:2017-01-31 21:19:31

标签: java android

所以我试图将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);
}

两者在同一个地方都给出了同样的错误,我已经做过类似的事情用于其他用途但这次无法让它工作。我环顾四周,其他类似的问题/答案没有帮助。所以任何帮助都将不胜感激。

3 个答案:

答案 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
              }