有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:获取生成的变量及其值?

我正在制作一个应用程序,对纯文本进行加密,然后通过电子邮件发送。我在“encrypt”方法中创建的cText变量(由用户输入的passT和keyT创建)在方法末尾返回。然而,我很好奇,我将如何将其纳入我的onCreate方法中,以便将其新的加密内容包含到电子邮件中?以下是我所拥有的,但我只得到了一些错误:

public class ScreenNext extends Activity {

int key = 0;
static char ch;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen_next)

    EditText emailT;//Import  EditTexts (Key and Email)  
    Button send = (Button) findViewById(R.id.bSend);//Import button1 (Send)
    final EditText passT = (EditText) findViewById(R.id.etTogg);//passT variable for Password Text for EditText field
    final EditText keyT = (EditText) findViewById(R.id.etKey);
    final EditText passT = (EditText) findViewById(R.id.etTogg);//passT variable for Password Text for EditText field

    send.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String keyText = keyT.getText().toString();
            String passText = passT.getText().toString();
            String EmailAdd = emailT.getText().toString();

            //This must be fixed
            //String cipherText = cText.getText().toString();


            Intent email = new Intent(Intent.ACTION_SEND);//The intent
            email.setType("plain/text");
            email.putExtra(Intent.EXTRA_EMAIL, new String[]{EmailAdd.toString()});
            email.putExtra(Intent.EXTRA_SUBJECT, "Your encrypted Password");//Subject is hard coded for convenience sake
            email.putExtra(Intent.EXTRA_TEXT, cText.toString());//Here we add encrypted Password that has just been generated
            startActivity(email);//Start the activity
        }

    });

}//End onCreate
...
}

我的加密方法是:

public static String message(String choice, String subKey, String message) {
int Option = Integer.parseInt(choice);//Must pareseInt
int key = Integer.parseInt(subKey);
message = message.toLowerCase();


ScreenNext subcipher_1 = null;
String CipherTxt = subcipher_1.encrypt(message, key);
return CipherTxt;
}


public static String encrypt(String Txt, int key) {

//local var cipherText of type string is init empty
String CipherTxt = "";//May be able to remove this'un 
String cText="";
//enhanced for loop 
// start at 0, go until "as long as input text" 
for (int i = 0; i < Txt.length(); i++) {
    //get a char from the string at index i (start at 0 work through to end of string)
    // and store in local var extractedChar for type char
    char extractedChar = Txt.charAt(i);
    /* enhanced for loop 
     * start at 0, go until end of user entered cipherKeyValue
     * either set to lowercase a or add one to the char
     * uses the checkifz method
     */
    for (int j = 0; j < key; j++) {
        ScreenNext subcipher_1 = null;
        if (subcipher_1.checkIfZ(extractedChar) == true) {
            extractedChar = 'a';
        } else {
            extractedChar++;
        }
        CipherTxt= new StringBuilder().append(extractedChar).toString();
    }
    //add extracted char to builder object
    //change object builder to string and assing to cipherText of type String
    //create new object builder from StringBuilder class
    cText = cText.concat(CipherTxt);
}
//Pass the cipherText value out of the method to whom ever called it

return cText;
}

非常感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    如果您想在Activity的多个部分中使用cText变量,那么需要将其置于方法之外,从而使其成为成员变量,最好是这样

    public class ScreenNext extends Activity {
    
    int key = 0;
    static char ch;
    String cText;
    

    但在使用它或对其应用任何方法之前,您可能需要初始化它或检查null。把变量放在这里可以给它提供类作用域,这样它就可以在这个Activity中的任何地方访问。你不能在onCreate()中再次“使用”它,因为一旦onCreate()方法完成,它就不会被再次调用。我假设你是在onClick()中讨论的,它是在onCreate()中设置的,但是当Button被点击时会被调用。我对你问题的措辞有点困惑,所以如果这不是你想要的,那就解释清楚一点