微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.widget.ProgressBar无法转换为android.widget.RelativeLayout

如何解决android.widget.ProgressBar无法转换为android.widget.RelativeLayout

我是android studio的新手。目前,我在android上的medlabtut应用程序上工作了3个月以上。我在MedLabStartUpScreen的登录按钮上遇到了问题,该问题实际上应该在单击时启动登录屏幕。而是它使应用程序完全崩溃,并在我的// Connection Hooks上显示了runtimeException“ progressbar = findViewById(R.id.login_progress_bar);”我的login.java类文件中的android.widget.ProgressBar无法转换为android.widget.RelativeLayout。我需要你的帮助

我的登录布局活动

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Common.LoginSignup.Login"
    android:orientation="vertical"
    android:background="#fff"
    android:padding="25dp"
    android:transitionName="transition_login">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    
         

<TextView
            android:id="@+id/logo_name"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Welcome Back! Login Here"
            android:textSize="40sp"
            android:transitionName="logo_text"
            android:fontFamily="@font/bungee"
            android:textColor="#000"
            android:layout_marginTop="20dp"/>

   



<TextView
            android:id="@+id/slogan_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Sign In to continue"
            android:textSize="18sp"
            android:layout_marginTop="10dp"
            android:fontFamily="@font/muli_black"
            android:transitionName="logo_desc"/>

        

<RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="30dp"
                android:layout_marginBottom="20dp">

            

<com.hbb20.CountryCodePicker
                    android:id="@+id/login_country_code_picker"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:ccp_autoDetectCountry="true"
                    app:ccp_showFlag="true"
                    app:ccp_showNameCode="true"
                    app:ccp_showFullName="true"
                    android:padding="5dp"
                    android:background="@drawable/black_border"/>

           



<com.google.android.material.textfield.TextInputLayout
                    android:layout_width="match_parent"
                    android:layout_below="@+id/login_country_code_picker"
                    android:id="@+id/login_phone_number"
                    android:layout_height="wrap_content"
                    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                    android:hint="@string/phone_number"
                    android:textColorHint="@color/Black"
                    app:BoxstrokeColor="@color/Black"
                    app:BoxstrokeWidthFocused="2dp"
                    app:endIconMode="clear_text"
                    app:endIconTint="@color/Black"
                    app:hintTextColor="@color/Black"
                    app:startIconDrawable="@drawable/field_phone_number_icon"
                    app:startIconTint="@color/Black">

                

<com.google.android.material.textfield.TextInputEditText
                        android:id="@+id/login_phone_number_editText"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:inputType="phone" />
  
</com.google.android.material.textfield.TextInputLayout>



<com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/login_password"
        android:layout_below="@+id/login_phone_number"
        android:hint="@string/password"
        app:startIconDrawable="@drawable/field_password_icon"
        app:startIconTint="@color/Black"
        android:transitionName="password_tran"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/Black"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/login_password_editText"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fontFamily="@font/muli_bold"
            android:inputType="textPassword" />

    </com.google.android.material.textfield.TextInputLayout>


<RelativeLayout
        android:id="@+id/forget_password_block"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/login_password"
        android:layout_marginTop="10dp">

        <CheckBox
            android:id="@+id/remember_me"
            style="@style/Widget.AppCompat.CompoundButton.CheckBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="@string/remember_me" />
        
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/forget_password"
            android:background="#00000000"
            android:layout_alignParentEnd="true"
            android:onClick="callForgetpassword"
            android:layout_alignParentRight="true"/>

    </RelativeLayout>



 <Button
        android:id="@+id/letTheUserLogin"
        android:layout_below="@+id/forget_password_block"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="5dp"
        android:background="#000"
        android:text="@string/login"
        android:onClick="letTheUserLoggedIn"
        android:textColor="#fff"
        android:transitionName="button_tran" />

<RelativeLayout
    android:id="@+id/login_sign_google_Box"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:padding="10dp"
    android:layout_margin="5dp"
    android:background="@drawable/rounded_rectangle"
    android:layout_below="@+id/letTheUserLogin">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/signin_with_google_icon"
        android:layout_centerVertical="true"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SIGN IN WITH GOOGLE"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true"
        android:fontFamily="@font/muli_bold"
        android:layout_margin="5dp"
        android:textColor="#000"/>

    <Button
        android:id="@+id/google_signIn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/transparent" />

</RelativeLayout>

            

<Button
                android:id="@+id/signup_screen"
                android:layout_below="@+id/login_sign_google_Box"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:text="Create Account"
                android:layout_centerHorizontal="true"
                android:elevation="0dp"
                android:layout_margin="5dp"
                android:textColor="#000"
                android:transitionName="login_signup_tran"/>

            

<RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="20dp"
                    android:layout_centerInParent="true"
                    android:background="@drawable/white_circle"
                    android:elevation="10dp">

                    <ProgressBar
                        android:id="@+id/login_progress_bar"
                        android:layout_width="30dp"
                        android:layout_height="30dp"
                        android:layout_centerInParent="true"/>

                </RelativeLayout>

                

<ImageView
                        android:id="@+id/social_fb"
                        android:layout_below="@+id/signup_screen"
                        android:layout_width="50dp"
                        android:layout_height="45dp"
                        android:src="@drawable/social_facebook_icon"
                        android:layout_marginLeft="130dp" />

                

<ImageView
                        android:id="@+id/social_tw"
                        android:layout_below="@id/signup_screen"
                        android:layout_width="45dp"
                        android:layout_height="45dp"
                        android:layout_centerHorizontal="true"
                        android:layout_marginLeft="150dp"
                        android:src="@drawable/social_twitter_icon" />
                

<ImageView
                        android:id="@+id/social_wh"
                        android:layout_width="45dp"
                        android:layout_height="45dp"
                        android:layout_below="@id/signup_screen"
                        android:layout_marginLeft="250dp"
                        android:src="@drawable/social_whatsapp_icon" />

        

</RelativeLayout>

 </LinearLayout>

以及login.java类文件代码

public class Login extends AppCompatActivity {

    CountryCodePicker countryCodePicker;
    Button callSignUp,login_btn;
    TextView logoText,sloganText;
    TextInputLayout username,phoneNumber,password;
    RelativeLayout progressbar;
    CheckBox rememberMe;
    EditText phoneNumberEditText,passwordEditText;
    private GoogleSignInClient mGoogleSignInClient;
    private  final  static int RC_SIGN_IN = 123; // request code

    Button verify;
    private FirebaseAuth mAuth;
@Override
protected void onStart() {
    super.onStart();

    FirebaseUser user = mAuth.getCurrentUser();
    if (user!=null){
        Intent intent = new Intent(getApplicationContext(),MedLabDashboard.class);
        startActivity(intent);
    }
}




 @SuppressLint("WrongViewCast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getwindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login);

        mAuth = FirebaseAuth.getInstance();

        createRequest();

        //when the user clicks the google button,call the signIn method
        findViewById(R.id.google_signIn).setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                signIn();
            }
        });



//Connection Hooks
    countryCodePicker = findViewById(R.id.country_code_picker);
    phoneNumber = findViewById(R.id.login_phone_number);
    progressbar = findViewById(R.id.login_progress_bar);
    callSignUp = findViewById(R.id.signup_screen);
    image = findViewById(R.id.logo_image);
    logoText = findViewById(R.id.logo_name);
    sloganText = findViewById(R.id.slogan_name);
    password = findViewById(R.id.login_password);
    login_btn = findViewById(R.id.Login_btn);
    rememberMe =  findViewById(R.id.remember_me);
    phoneNumberEditText = findViewById(R.id.login_phone_number_editText);
    passwordEditText = findViewById(R.id.login_password_editText);




//Check whether phone number and password is already saved in Shared Preference or not
    SessionManager sessionManager = new SessionManager(Login.this,SessionManager.SESSION_REMEMBERME);
    if (sessionManager.checkRemeberMe()){
        HashMap<String,String> rememberMeDetails = sessionManager.getRememberMeDetailFromSession();
        phoneNumberEditText.setText(rememberMeDetails.get(SessionManager.KEY_SESSIONPHONENUMBER));
        passwordEditText.setText(rememberMeDetails.get(SessionManager.KEY_SESSIONPASSWORD));
    }



 callSignUp.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Login.this,SignUp.class);

            Pair[] pairs = new Pair[7];
            pairs[0] = new Pair<View,String>(image,"logo_image");
            pairs[1] = new Pair<View,String>(logoText,"logo_name");
            pairs[2] = new Pair<View,String>(sloganText,"logo_desc");
            pairs[3] = new Pair<View,String>(username,"username_tran");
            pairs[4] = new Pair<View,String>(password,"password_tran");
            pairs[5] = new Pair<View,String>(login_btn,"button_tran");
            pairs[6] = new Pair<View,String>(callSignUp,"login_signup_tran");

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                try {

                    startActivity(intent);

                } catch (Exception e) {

                    e.printstacktrace();
                }
            }
        }
    });
}




//Setting Auto Google Sign In request
private void createRequest() {
    // Configure Google Sign In
    GoogleSignInoptions gso = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestemail()
            .build();

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this,gso);
}

//SignIn with google method that'll pop-up user google accounts (Intent)
private void signIn() {
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();
    startActivityForResult(signInIntent,RC_SIGN_IN);
}




@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
    super.onActivityResult(requestCode,resultCode,data);

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            //Google Sign in was successful,authenticate with firebase
            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithGoogle(account);
        } catch (ApiException e){
            //Sign in Failed,update UI appropriately
            Toast.makeText(this,e.getMessage(),Toast.LENGTH_SHORT).show();
        }
    }
}



 private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
        AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(),null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success,update UI with the signed-in user's information
                            FirebaseUser user = mAuth.getCurrentUser();
                            Intent intent = new Intent(getApplicationContext(),MedLabDashboard.class);
                            startActivity(intent);
                        } else {
                            Toast.makeText(Login.this,"Sorry authentication Failed",Toast.LENGTH_SHORT).show();
                        }
                    }
                });
             }

//login the user in app
public void letTheUserLoggedIn(View view) {

    //Check the internet connection
    CheckInternet checkInternet = new CheckInternet();
    if (!isConnected(Login.this)) {
        showCustomDialog();
    }

    //validate user and password
    if (!validateFields()) {
        return;
    }
    progressbar.setVisibility(View.VISIBLE);

    //get value from fields
    String _phoneNumber = phoneNumber.getEditText().getText().toString().trim();
    final String _password = password.getEditText().getText().toString().trim();
    if (_phoneNumber.charat(0) == '0') { //if the user uses proceeding zero (0)
        _phoneNumber = _phoneNumber.substring(1);
    }


    final String _completePhoneNumber = "+" + countryCodePicker.getFullNumber() + _phoneNumber;




//Remember me checkBox
    if (rememberMe.isChecked()){
        SessionManager sessionManager = new SessionManager(Login.this,SessionManager.SESSION_REMEMBERME);
        sessionManager.createRememberMeSession(_phoneNumber,_password);
    }

    //database query if user exist or not
    Query checkUser = FirebaseDatabase.getInstance().getReference("Users").orderByChild("phoneNo").equalTo(_completePhoneNumber);
    checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) { //if the data has arrived or exists
                phoneNumber.setError(null); //if there's any error on the phoneNumber,remove
                phoneNumber.setErrorEnabled(false); //if there is error space,set to false

                String systemPassword = dataSnapshot.child(_completePhoneNumber).child("password").getValue(String.class);

                //if password exist and matches with users password,then get other fields from firebase database
                if (systemPassword.equals(_password)) {
                    password.setError(null); //if there's any error on the password,remove
                    password.setErrorEnabled(false); //if there is error space,set to false

                    String _fullname = dataSnapshot.child(_completePhoneNumber).child("fullName").getValue(String.class);
                    String _username = dataSnapshot.child(_completePhoneNumber).child("username").getValue(String.class);
                    String _email = dataSnapshot.child(_completePhoneNumber).child("email").getValue(String.class);
                    String _phoneNo = dataSnapshot.child(_completePhoneNumber).child("phoneNo").getValue(String.class);
                    String _password = dataSnapshot.child(_completePhoneNumber).child("password").getValue(String.class);
                    String _dateOfBirth = dataSnapshot.child(_completePhoneNumber).child("date").getValue(String.class);
                    String _gender = dataSnapshot.child(_completePhoneNumber).child("gender").getValue(String.class);

                    //Create a session
                    SessionManager sessionManager = new SessionManager(Login.this,SessionManager.SESSION_USERSESSION);
                    sessionManager.createLoginSession(_fullname,_username,_email,_phoneNo,_password,_dateOfBirth,_gender);

                    startActivity(new Intent(getApplicationContext(),MedLabDashboard.class));

                    Toast.makeText(Login.this,_fullname + "\n" + _email + "\n" + _phoneNo + "\n" + _dateOfBirth,Toast.LENGTH_SHORT).show();
                    progressbar.setVisibility(View.GONE);

                } else {
                    progressbar.setVisibility(View.GONE);
                    Toast.makeText(Login.this,"Password does not match!",Toast.LENGTH_SHORT).show();
                }
            } else {
                progressbar.setVisibility(View.GONE);
                Toast.makeText(Login.this,"No such user exist",Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            progressbar.setVisibility(View.GONE);
            Toast.makeText(Login.this,databaseError.getMessage(),Toast.LENGTH_SHORT).show();
        }
    });
}


//check internet connection
private boolean isConnected(Login login) {
    ConnectivityManager connectivityManager = (ConnectivityManager)   login.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiConn = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    NetworkInfo mobileConn = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if ((wifiConn != null && wifiConn.isConnected()) || (mobileConn != null && mobileConn.isConnected())) {
        return true;
    } else {
        return false;
    }
}

private void showCustomDialog() {

    AlertDialog.Builder builder = new AlertDialog.Builder(Login.this);
    builder.setMessage("Please connect to the internet to continue");
    builder.setCancelable(false)
            .setPositiveButton("Connect",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface,int i) {
                    startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
                }
            })
            .setNegativeButton("Cancel",int i) {
                    startActivity(new Intent(getApplicationContext(),MedLabStartUpScreen.class));
                    finish();
                }
            });
         }



private boolean validateFields() {

    String _phoneNumber = phoneNumber.getEditText().getText().toString().trim();
    String _password = password.getEditText().getText().toString().trim();

    if (_phoneNumber.isEmpty()) {
        phoneNumber.setError("Phone number cannot be empty");
        phoneNumber.requestFocus();
        return false;
    } else if (_password.isEmpty()) {
        password.setError("Password cannot be empty");
        password.requestFocus();
        return false;
    } else {
        password.setError(null);
        password.setErrorEnabled(false);
        return true;
    }
}



public void callForgetpassword(View view){
    startActivity(new Intent(getApplicationContext(),Forgetpassword.class));
}

@Override
public void onBackpressed() {
    Intent a = new Intent(Intent.ACTION_MAIN);
    a.addCategory(Intent.CATEGORY_HOME);
    a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(a);
    finish();
}}

MedLabStartUpScreen活动屏幕

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/White"
    android:padding="30dp"
    tools:context=".Common.LoginSignup.MedLabStartUpScreen">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:src="@drawable/splash_screen" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="120dp"
        android:fontFamily="@font/muli_black"
        android:text="@string/medlab_heading"
        android:textAlignment="center"
        android:textAllCaps="true"
        android:textColor="@color/Black"
        android:textSize="36sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:fontFamily="@font/muli_light"
        android:text="@string/medlab_tab_line"
        android:textAlignment="center"
        android:textColor="@color/Black" />




<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp">

        <Button
            android:id="@+id/login_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:layout_marginEnd="10dp"
            android:onClick="callLoginScreen"
            android:layout_weight="1"
            android:background="@color/colorPrimaryDark"
            android:text="@string/login"
            android:textColor="@color/Black"
            tools:ignore="ButtonStyle"
            android:transitionName="transition_login"/>

        <Button
            android:id="@+id/signup_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:background="@color/colorPrimaryDark"
            android:text="@string/sign_up"
            android:textColor="@color/Black" />

    </LinearLayout>

<Button
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="@string/how_we_work"
        android:textColor="@color/Black"
        android:layout_marginTop="20dp"
        android:background="#00000000"/>

</LinearLayout>

</ScrollView>

具有登录按钮的MedLabStartUPScreen.java类

public class MedLabStartUpScreen extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getwindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.activity_med_lab_start_up_screen);
        }



public void callLoginScreen(View view){
        Intent intent = new Intent(getApplicationContext(),Login.class);

        Pair[] pairs = new Pair[1];
        pairs[0] = new Pair<View,String>(findViewById(R.id.login_btn),"transition_login");

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MedLabStartUpScreen.this,pairs);
            startActivity(intent,options.toBundle());
        }
        else {
            startActivity(intent);
        }
    }
 }

解决方法

在第7行附近,您声明此变量:

RelativeLayout progressbar;

然后您可以正确地使用以下方法初始化该变量:

progressbar = findViewById(R.id.login_progress_bar);

问题在于,在xml中,具有此ID的视图(窗口小部件)是ProgressBar,但是Java代码中progressbar的类型声明是RelativeLayout。因此,您的代码正在尝试将布局文件中的ProgressBar强制转换为RelativeLayout。

您可以通过将第7行的声明更改为:

来解决此问题。

ProgressBar progressbar;

(然后在Java文件的顶部添加必要的导入:import android.widget.ProgressBar;)。

希望这会有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?