android.widget.TextView无法强制转换为android.widget.EditView

时间:2015-04-09 09:43:24

标签: android android-edittext textview

当我试图运行此代码时,它显示错误。问题是什么。如果你找到,请告诉我。 但我没有将Textview转换为EditText,但它显示错误。

我的xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dailyexpenses.LoginTypeConfirmation" >

<TextView
    android:id="@+id/Confirmation_password_info"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/Confirmation_password"
    android:layout_alignParentTop="true"
    android:layout_marginTop="38dp"
    android:text="@string/loginType_confirm" />
<EditText
    android:id="@+id/Confirmation_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/Confirmation_password_info"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="44dp"
    android:ems="10"
    android:hint="@string/confirm_password"
    android:inputType="textPassword" />
<Button
    android:id="@+id/Confirmation_password_submit"
    android:layout_width="match_parent"
    android:layout_height="35dp"
    android:layout_alignLeft="@+id/Confirmation_password"
    android:layout_below="@+id/Confirmation_password"
    android:layout_marginTop="34dp"
    android:background="@color/project_theme"
    android:text="@string/submit"
    android:textColor="@color/font_color" />

我的Java代码:

import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.InputType;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class LoginTypeConfirmation extends ActionBarActivity {
    private TextView info;
    private EditText old_password;
    private Button save;
    private SQLiteDatabase db;
    String login_type = null, password = null, pin_password = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_type_confirmation_ui);
        db = openOrCreateDatabase("DailyExpenses", Context.MODE_PRIVATE, null);

        info = (TextView) findViewById(R.id.Confirmation_password_info);
        old_password = (EditText) findViewById(R.id.Confirmation_password);
        save = (Button) findViewById(R.id.Confirmation_password_submit);

checkLoginType();         }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.login_type_confirmation, menu);
        return true;
    }

    public void checkLoginType()
    {       
        Cursor c = db.rawQuery("select login_type password, pin_password     from user_information", null);
        while(c.moveToNext())
        {
            login_type = c.getString(0);
            password = c.getString(1);
            pin_password = c.getString(2);
        }
        if (login_type.equals("pin_password"))
        {
            info.setText("Enter your old pin");
            old_password.setText("Confirm Pin");
            old_password.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
        }   
    }

    public void validatePassword(View view)
    {
        if (old_password.getText().toString().equals(password))
        {
            Intent loginType = new Intent(this, LoginType.class);
            startActivity(loginType);
        }
        else
        {
            Toast.makeText(this, "Incorrect Password", Toast.LENGTH_SHORT).show();
        }
    }
}

如果我删除checkLoginType()方法它工作正常。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将View传递给checkLoginType()方法,它将如下所示:

public void checkLoginType(View v)
{       
    Cursor c = db.rawQuery("select login_type password, pin_password     from user_information", null);
    while(c.moveToNext())
    {
        login_type = c.getString(0);
        password = c.getString(1);
        pin_password = c.getString(2);
    }
    if(login_type.equals("pin_password"))
    {
        info.setText("Enter your old pin");
        old_password.setText("Confirm Pin");
        old_password.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
    }   
}

如果你还面临问题,请告诉我......

答案 1 :(得分:0)

只需将public void checkLoginType()更改为public void checkLoginType(View v)

即可