使用非活动类,它应该能够处理调用活动的实例变量

时间:2016-07-31 06:48:41

标签: android android-activity

我有两个活动A和B,以及一个非活动类C.

要使用C的方法,我从当前运行的活动创建C的实例c(比如A在前台,A创建了C)。

现在,我想使用c中活动A的实例变量。我该怎么办?

我正在尝试将非活动C类用于多个活动。请帮我!我已经研究了很多,但仍然找不到任何有用的东西。 :(

这是示例代码:

ActivityOne.java:

package com.example.vaibhav.a21matchsticks;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class Example extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    }

// Now comes the method, I want to use in the non-activity java class.

public void buttonClick(View view) {
    EditText editText = (EditText) findViewById(R.id.editMe); //finds the view from the activity
    int i = Integer.parseInt(editText.getText().toString());

    //Below code changes the view state, if the condition is true

    if(i<4) { 
        findViewById(R.id.button).setEnabled(false);
    }

}

假设xml文件具有线性布局,其中包含一个EditText视图(带有id'editMe')和一个Button(带有id'按钮')。这样的活动超过1个,每个活动至少有两个以上的观点(可能更多)。

我的工作是创建一个非活动类C,以处理不同活动的条件语句并相应地更改相应的布局。

1 个答案:

答案 0 :(得分:0)

即使只是模糊,你的C级似乎是一个帮手类。现在,由于您想要在C类中访问实例变量(以及可能的其他信息),您需要手动传递它们。根据您传递的内容,可以在构造函数中或通过C类本身的实例方法将其提供给C类。

例如:根据您问题的最后一条陈述,您可以通过以下内容将活动中的ViewGroup引用传递给C类:

public void initLayout(ViewGroup parent) {

    // Hide/unhide/perform actions/etc based on current activity needs

}

同样,您也可以将enum值传递给C类,以区分C类中的活动。对于C类到活动的通信,您可以在Java中查看interface。希望这会有所帮助。