我有两个活动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,以处理不同活动的条件语句并相应地更改相应的布局。
答案 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
。希望这会有所帮助。