我试图在片段选项卡上使用凌空创建登录页面,但是在以下位置我的Java代码出现错误 volley.newRequesQueue(this).add(request);
我是android的新手,我不知道这是什么错误将我拖到后面。我想连接它 到我的数据库。
错误提示“ Volley中的newRequestQueue(android.content.context)无法应用于 (com.example.myandroidprac.loginpage)“,下面是代码:-
package com.example.myandroidprac;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
enter code here
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
/**
* A simple {@link Fragment} subclass.
我的Java代码出现在下面
*/
public class loginpage extends Fragment {
Button btn_login;
EditText et_username, et_password;
public loginpage() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_loginpage, container, false);
btn_login = v.findViewById(R.id.btn_login);
et_username = v.findViewById(R.id.et_username);
et_password = v.findViewById(R.id.et_password);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login();
}
});
return v;
}
public void login(){
StringRequest request = new StringRequest(Request.Method.POST,
"http://10.183.52.242/loginapp/login.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getContext(),"this is
response:"+response,Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("username","mwalulu");
params.put("password","coder");
return params;
}
};
Volley.newRequestQueue(this).add(request);
}
}
和下面的UI布局代码说明了我在那方面的情况
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/loginPage"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".loginpage"
android:paddingRight="10dp"
android:paddingLeft="10dp">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="casual"
android:text="@string/logex"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.555"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.023" />
<EditText
android:id="@+id/et_username"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:autofillHints="Enter Username"
android:ems="10"
android:hint="@string/user"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.555"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/textView2"
app:layout_constraintVertical_bias="0.116" />
<EditText
android:id="@+id/et_password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:autofillHints="Enter Password"
android:ems="10"
android:hint="@string/pass"
android:inputType="textPassword"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.555"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_username"
app:layout_constraintVertical_bias="0.065" />
<Button
android:id="@+id/btn_login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/logbtn"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.532"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_password"
app:layout_constraintVertical_bias="0.125" />
</androidx.constraintlayout.widget.ConstraintLayout>
答案 0 :(得分:0)
因为您的类extends Fragment
无法将this
作为Volley.newRequestQueue()
函数的参数传递。将this
更改为getContext()
:
Volley.newRequestQueue(getContext()).add(request);
在Android documentation of Context中,如果您查看直接和间接子类,将找不到Fragment
。但是您会发现Activity
类和其他许多类。因此,您可以使用getActivity()
或更好的getContext()
来引用Context
。
因此,两种解决方案均有效:
Volley.newRequestQueue(getContext()).add(request);
Volley.newRequestQueue(getActivity()).add(request);