我已经从第一个屏幕通过putExtra传递了一个值,并通过getStringExtra方法获取到第二个屏幕。为了确认我已收到该值,我在第二个屏幕上将其作为TextView传递,然后我就能得到它。
现在我将此值传递给url,但android studio正在显示红线。在鼠标滚动期间,它显示以下错误。
无法解析符号' 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();
String cropcategoryname = i.getStringExtra("cropCategoryName");
txtName.setText(cropcategoryname);
} private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
我认为这是一个简单的问题,但我已经坚持了一段时间。
答案 0 :(得分:3)
String cropcategoryname = i.getStringExtra("cropCategoryName");
这是onCreate()方法中的局部变量。
private String url = "http://dsy.impras.in/mup/cropname.php?cropcategory=" + cropcategoryname;
这是活动类中的实例字段。执行此代码时,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;
答案 1 :(得分:0)
试试这个:
在onCreate
之前的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));
}
来自MainActivity的执行此操作:
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);
});
然后检索您的String
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
TextView txtName = (TextView) findViewById(R.id.cropCategoryName);
cropcategoryname = getIntent().getStringExtra(EXTRA_NAME);
if(cropcategoryname != null) txtName.setText(cropcategoryname);
}
之后你可以使用url String:
if(cropcategoryname != null) {
String finalUrl = url + cropcategoryname;
}
希望它有所帮助!!!
答案 2 :(得分:-1)
只需在onCreate方法上方初始化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;