首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中访问子类中的主要活动内容

如何在android中访问子类中的主要活动内容
EN

Stack Overflow用户
提问于 2011-09-15 16:53:43
回答 3查看 2.2K关注 0票数 0

我已经在主活动上编辑文本,我需要访问我的子类上的编辑文本......

这是我的主要活动

代码语言:javascript
复制
private EditText et1;
    private EditText et2, et;

// int dec = et.getText().toString().length()-1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    et = et1;
    gLib = GestureLibraries.fromRawResource(this, R.raw.gestures);

    // glip1 = GestureLibraries.fromRawResource(this, R.raw.gestures1);

    if (!gLib.load()) {
        Log.w(TAG, "could not load gesture library");
        finish();
    }
    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
    common myHandler = new common();
    gestures.addOnGesturePerformedListener(myHandler);
}

这是我的班级

代码语言:javascript
复制
public class common implements OnGesturePerformedListener {


    @Override
    public void onGesturePerformed(GestureOverlayView gestureView,
            Gesture gesture) {
        System.out.println("guster");

        ArrayList<Prediction> predictions = gLib.recognize(gesture);//i have to acces glip from main activity
        // ArrayList<Prediction> predictions1 = glip1.recognize(gesture);
        // one prediction needed
        if (predictions.size() > 0 && predictions.get(0).score > 2.0) {
            String prediction = predictions.get(0).name;
            // checking prediction

            if (prediction.equals("A")) {
                // and action
                et.append("A");// i have to access edit text from main activity
                // et.getText().insert(et.getSelectionStart(), "A");
            }
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2011-09-15 16:56:43

在构造函数中传递对活动的引用,并添加相关方法以在类之间进行通信(不要直接访问活动的字段...)

在活动中:

代码语言:javascript
复制
 common myHandler = new common(this);

在Common中(名称约定使用大写C):

代码语言:javascript
复制
public class Common implements OnGesturePerformedListener {

    private YourActivityClass activity;

    public Common(YourActivityClass activity) {
        this.activity = activity;
    }
    // Rest of code

}
票数 3
EN

Stack Overflow用户

发布于 2011-09-15 16:59:03

最简单的方法是在初始化时将主类/对象引用传递到子类中,即在构造函数中。并将引用存储在成员变量中以供以后使用。

票数 0
EN

Stack Overflow用户

发布于 2011-09-16 02:08:45

忘记尝试从活动外部访问成员的斗争。

只需让您的活动实现GesturePerformedListener

代码语言:javascript
复制
public class MyActivity implements OnGesturePerformedListener
{
  //your activity code here
}

然后,只需使用this,而不是在初始化侦听器时创建common

代码语言:javascript
复制
gestures.addOnGesturePerformedListener(this);

这样就不再需要单独的类,并允许您直接访问TextView

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7428236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档