开发者

how to acces main activity content in subclass in android

开发者 https://www.devze.com 2023-04-05 13:42 出处:网络
i have edit text on main activity i need to access this edit text on my sub class ...... this is my main activity

i have edit text on main activity i need to access this edit text on my sub class ......

this is my main activity

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

this is my class

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


Pass a reference to the activity in the constructor, and add relevant methods to communicate between the classes (don't access the Activity's fields directly...)

In activity:

 common myHandler = new common(this);

In Common (used a capital C for name convention):

public class Common implements OnGesturePerformedListener {

    private YourActivityClass activity;

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

}


Easiest way would be to pass the main class / object reference into the subclass while initiating i.e. in constructor. And store the reference in member variable to use them later.


Forget trying to struggle with accessing members from outside the activity.

Just have your activity implement GesturePerformedListener

public class MyActivity implements OnGesturePerformedListener
{
  //your activity code here
}

Then instead of creating a common class when stting the listener just use this:

gestures.addOnGesturePerformedListener(this);

This removes the need for a seperate class and allows you to access your TextView directly

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号