0

我无法将非活动类中的文本字符串附加到 EditText 视图。

我尝试将视图作为参数传递给类的构造函数。

基本问题是我无法在非 Activity 类中使​​用 findViewById。

我知道这是一个愚蠢的问题,但我已经尝试了很多,但根本无法做到这一点。

我的代码示例是:

    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.printtesting;

import android.app.Activity;
import android.widget.EditText;
import java.math.BigInteger;
import java.util.Random;
import java.util.Vector;
//import javax.swing.JOptionPane;

/**
 *
 * @author HP
 */
public class keyGenerator {

    /**
     * @param args the command line arguments
     */

      static  Vector check = new Vector();


      static protected BigInteger p= new BigInteger("161");
      static protected BigInteger q= new BigInteger("47");
      static protected Random s = new Random();
      static protected BigInteger n = new BigInteger("1");
      static protected BigInteger trails;
      static protected BigInteger lambda ;
      static protected BigInteger nsq  = new BigInteger("1");
      static protected BigInteger g = new BigInteger("1");
      static protected BigInteger temp = new BigInteger("1");

    static protected int maxbit;
    private static BigInteger two = new BigInteger("2");

    public keyGenerator() {
      //  p = new BigInteger(7,1,s);
                System.out.println(p.toString());
      /*  while(!isPrime(p) && ( (p.compareTo(two)==1) || (p.compareTo(two))==0) )
        {
                p = new BigInteger(7,1,s);

        System.out.println(p.toString());
        }*/
        System.out.println("P is " + p);


    //    q = new BigInteger(7,1,s);
      /*  while(!isPrime(q) && ( (q.compareTo(two)==1) || (q.compareTo(two))==0) )
        {
                q = new BigInteger(7,1,s);
        }*/
        System.out.println("Q is " + q);




        // TODO code application logic here

       // BigInteger oth = new BigInteger("132312"); 
       generateKey();

    }


    protected  void generateKey()
    {
   EditText et = (EditText) Activity.findViewByID(R.string.te);
    // N=pq
    n=n.multiply(p);
    n=n.multiply(q);
    ....
}
4

3 回答 3

2

您不能这样做,因为 findViewByID 是实例方法,而不是静态方法。您需要做以下两件事之一:

1)将活动作为参数传递给此类。这将允许您在其上调用 findViewByID

2)将 EditText 作为参数传递(在活动类中调用 findViewByID 之后)。这将允许您只调用 setText 就可以了

于 2012-11-15T15:39:01.827 回答
0
EditText et = (EditText) Activity.findViewByID(R.string.te);

您需要从活动中传递活动变量。

EditText et = (EditText) (activity var).findViewByID(R.string.te);
于 2012-11-15T15:40:48.143 回答
0

您可以将 Edittext Activity 类的上下文传递给非 keyGenerator 类:

Context conn;
public keyGenerator(Context con) {
conn=con;
//Your Code...
}

现在您可以将 keyGenerator 上的文本附加到 Edittext 为:

EditText et = (EditText)conn.findViewByID(R.string.te);
et.append("your text here");

您可以将 Current Context 传递给 keyGenerator 构造函数,如下所示:

keyGenerator obj=new keyGenerator(Current_Activity.this);
于 2012-11-15T15:42:35.390 回答