从非活动类添加EditText

时间:2012-11-15 15:35:50

标签: java android user-interface view android-activity

我无法将非活动类的文本字符串附加到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);
    ....
}

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

EditText et = (EditText) Activity.findViewByID(R.string.te);

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

EditText et = (EditText) (activity var).findViewByID(R.string.te);

答案 2 :(得分:0)

您可以将Edittext Activity Class的Context传递给Non keyGenerator Class:

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");

您可以将当前上下文传递给keyGenerator构造函数:

keyGenerator obj=new keyGenerator(Current_Activity.this);