Android 未在URL中设置getStringExtra()值
我已经通过putExtra从第一个屏幕传递了一个值,并通过getStringExtra方法获取到第二个屏幕。为了确认我已经收到了这个值,我在第二个屏幕上以文本视图的形式传递了它,并且我能够得到它 现在我将这个值传递给url,但android studio在它下面显示红线。鼠标翻转期间,显示以下错误 无法解析符号“cropcategoryname” 代码如下Android 未在URL中设置getStringExtra()值,android,Android,我已经通过putExtra从第一个屏幕传递了一个值,并通过getStringExtra方法获取到第二个屏幕。为了确认我已经收到了这个值,我在第二个屏幕上以文本视图的形式传递了它,并且我能够得到它 现在我将这个值传递给url,但android studio在它下面显示红线。鼠标翻转期间,显示以下错误 无法解析符号“cropcategoryname” 代码如下 @Override protected void onCreate(Bundle savedInstanceState) { sup
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
TextView txtName = (TextView) findViewById(R.id.cropCategoryName);
Intent i = getIntent();
String cropcategoryname = i.getStringExtra("cropCategoryName");
txtName.setText(cropcategoryname);
} private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
我相信这是一个简单的问题,但我已经坚持了一段时间
String cropcategoryname = i.getStringExtra("cropCategoryName");
这是onCreate()方法中的局部变量
这是活动类中的实例字段。执行此代码时,onCreate()中的局部变量不存在
我建议您了解可变范围和活动生命周期。由于url
的值依赖于仅在onCreate()
中可用的值,因此必须在该方法中初始化url
,而不是与其字段声明内联:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
TextView txtName = (TextView) findViewById(R.id.cropCategoryName);
Intent i = getIntent();
String cropcategoryname = i.getStringExtra("cropCategoryName");
txtName.setText(cropcategoryname);
url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
}
private String url;
这是onCreate()方法中的局部变量
这是活动类中的实例字段。执行此代码时,onCreate()中的局部变量不存在
我建议您了解可变范围和活动生命周期。由于url
的值依赖于仅在onCreate()
中可用的值,因此必须在该方法中初始化url
,而不是与其字段声明内联:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
TextView txtName = (TextView) findViewById(R.id.cropCategoryName);
Intent i = getIntent();
String cropcategoryname = i.getStringExtra("cropCategoryName");
txtName.setText(cropcategoryname);
url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
}
private String url;
只需在onCreate方法上方初始化cropcategoryname字符串变量
private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
String cropcategoryname="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
TextView txtName = (TextView) findViewById(R.id.cropCategoryName);
Intent i = getIntent();
cropcategoryname = i.getStringExtra("cropCategoryName");
txtName.setText(cropcategoryname);
} private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
只需在onCreate方法上方初始化cropcategoryname字符串变量
private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
String cropcategoryname="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
TextView txtName = (TextView) findViewById(R.id.cropCategoryName);
Intent i = getIntent();
cropcategoryname = i.getStringExtra("cropCategoryName");
txtName.setText(cropcategoryname);
} private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
试试这个:
在创建之前的CropnameActivity中使用此选项:
private static final String EXTRA_NAME = "EXTRA_NAME";
private String cropcategoryname;
private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=";
private static Intent createIntent(Context context, String cropCategoryName) {
Intent intent = new Intent(context, CropnameActivity .class);
intent.putExtra(EXTRA_NAME, cropCategoryName);
return intent;
}
public static void startActivity(Activity activity, String cropCategoryName) {
activity.startActivity(createIntent(activity, cropCategoryName));
}
从主活动中执行以下操作:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String cropCategoryName =((TextView)view.findViewById(R.id.cropCategoryName)).getText().toString();
Toast.makeText(getApplicationContext(),cropCategoryName,Toast.LENGTH_SHORT).show();
CropnameActivity.startActivity(MainActivity.this, cropCategoryName);
});
之后,您可以使用url字符串,如下所示:
if(cropcategoryname != null) {
String finalUrl = url + cropcategoryname;
}
希望对你有帮助 试试这个:
在创建之前的CropnameActivity中使用此选项:
private static final String EXTRA_NAME = "EXTRA_NAME";
private String cropcategoryname;
private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=";
private static Intent createIntent(Context context, String cropCategoryName) {
Intent intent = new Intent(context, CropnameActivity .class);
intent.putExtra(EXTRA_NAME, cropCategoryName);
return intent;
}
public static void startActivity(Activity activity, String cropCategoryName) {
activity.startActivity(createIntent(activity, cropCategoryName));
}
从主活动中执行以下操作:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String cropCategoryName =((TextView)view.findViewById(R.id.cropCategoryName)).getText().toString();
Toast.makeText(getApplicationContext(),cropCategoryName,Toast.LENGTH_SHORT).show();
CropnameActivity.startActivity(MainActivity.this, cropCategoryName);
});
之后,您可以使用url字符串,如下所示:
if(cropcategoryname != null) {
String finalUrl = url + cropcategoryname;
}
希望对你有帮助 发布您的意图共享代码。第一个屏幕代码如下。lv.setOnItemClickListener(新的android.widget.AdapterView.OnItemClickListener(){@Override public void onItemClick(AdapterView AdapterView,View视图,int i,long l){Intent cropcategoryIntent=new Intent(MainActivity.this,CropnameActivity.class);字符串cropCategoryName=((TextView)View.findViewById(R.cropCategoryName)).getText().toString();Toast.makeText(getApplicationContext(),cropCategoryName,Toast.LENGTH_SHORT).show();cropcategoryIntent.putExtra(“cropCategoryName”,cropCategoryName);startActivity(cropcategoryIntent);})@KookyLibra在回复关于其他信息的请求时,你应该回答你的问题,因为你不能在评论中格式化代码。发布你的意图共享代码。第一个屏幕代码如下。lv.setOnItemClickListener(新的android.widget.AdapterView.OnItemClickListener(){@Override public void onItemClick(AdapterView AdapterView,View视图,int i,long l){Intent cropcategoryIntent=new Intent(MainActivity.this,CropnameActivity.class);字符串cropCategoryName=((TextView)View.findViewById(R.cropCategoryName)).getText().toString();Toast.makeText(getApplicationContext(),cropCategoryName,Toast.LENGTH_SHORT).show();cropcategoryIntent.putExtra(“cropCategoryName”,cropCategoryName);startActivity(cropcategoryIntent);})@KookyLibra在回复有关附加信息的请求时,您应该回答您的问题,因为您无法在注释中格式化代码。应用程序崩溃。日志显示。致命异常:主进程:com.example.pj3,PID:18832 java.lang.NullPointerException:尝试在com.example.pj3.CropnameActivity$GetCropnames.onPostExecute(CropnameActivity.java:144)上的空对象引用上调用虚拟方法“void android.widget.ListView.setAdapter(android.widget.ListAdapter)”在com.example.pj3.CropnameActivity$GetCropnames.onPostExecute(CropnameActivity.java:56)144:lv.setAdapter(adapter);56:私有类GetCropnames扩展了AsyncTask{@Override protected void onPreExecute(){super.onPreExecute();//显示进度对话框pDialog=new ProgressDialog(CropnameActivity.this);pDialog.setMessage(“请稍候…”);pDialog.setCancelable(false);pDialog.show();}@KookyLibra您应该发布一个新问题,其中包含一个导致错误的最小工作示例。有关创建代码示例以帮助您获得所需答案的提示,请参阅。现在代码学徒的答案工作正常。谢谢。应用程序崩溃。Logcat显示。致命异常:主进程:com.example.pj3,PID:18832 java.lang.NullPoiInterException:尝试在com.example.pj3.CropnameActivity$GetCropnames.onPostExecute(CropnameActivity.java:144)的com.example.pj3.CropnameActivity$GetCropnames.onPostExecute(CropnameActivity.java:144)的空对象引用上调用虚拟方法'void android.widget.ListView.setAdapter(android.widget.ListAdapter)'(CropnameActivity.onPostExecute(CropnameActivity.java:56)144:lv.setAdapter);56:私有类GetCropnames扩展AsyncTask{@Override protected void onPreExecute(){super.onPreExecute();//显示进度对话框pDialog=new ProgressDialog(CropnameActivity.this);pDialog.setMessage(“请稍候…”);pDialog.setCancelable(false);pDialog.show();}@KookyLibra您应该发布一个新问题,其中包含导致错误的最小工作示例。有关创建代码示例的提示,请参阅,该示例将帮助您获得所需答案。现在代码学徒的答案很好。谢谢。这也不起作用。应用程序因错误而崩溃。Logcat显示。致命异常:主进程:com.example、 pj3,PID:18832 java.lang.NullPointerException:尝试调用虚拟方法“void”