Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未在URL中设置getStringExtra()值_Android - Fatal编程技术网

Android 未在URL中设置getStringExtra()值

Android 未在URL中设置getStringExtra()值,android,Android,我已经通过putExtra从第一个屏幕传递了一个值,并通过getStringExtra方法获取到第二个屏幕。为了确认我已经收到了这个值,我在第二个屏幕上以文本视图的形式传递了它,并且我能够得到它 现在我将这个值传递给url,但android studio在它下面显示红线。鼠标翻转期间,显示以下错误 无法解析符号“cropcategoryname” 代码如下 @Override protected void onCreate(Bundle savedInstanceState) { sup

我已经通过putExtra从第一个屏幕传递了一个值,并通过getStringExtra方法获取到第二个屏幕。为了确认我已经收到了这个值,我在第二个屏幕上以文本视图的形式传递了它,并且我能够得到它

现在我将这个值传递给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;
我相信这是一个简单的问题,但我已经坚持了一段时间

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)).getTex‌​t().toString(); 
          Toast.makeText(getApplicationContext(),cropCategoryName,Toas‌​t.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)).getTex‌​t().toString(); 
          Toast.makeText(getApplicationContext(),cropCategoryName,Toas‌​t.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”