当我厌倦了通过创建对象来初始化所有组件时是否有任何问题? 按下按钮后没有任何反应。
我的自定义课程:
public class ViewHandler extends AppCompatActivity {
public Button btndo;
public TextView text1;
public EditText et1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
btndo = (Button) findViewById(R.id.button1);
btndo.setOnClickListener(btndolistener);
text1 = (TextView) findViewById(R.id.textView1);
et1 = (EditText) findViewById(R.id.editText1);
}
private Button.OnClickListener btndolistener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
text1.setText("test");
}
};
我的主要活动:
public class MainActivity extends AppCompatActivity {
protected ViewHandler viewtodo = new ViewHandler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewtodo.onCreate(savedInstanceState);
}
答案 0 :(得分:0)
您无法使用Activity
实例化new
课程,例如您尝试使用viewhandler
。只有Android框架才能实例化一个Activity。
此外,带有子Activity的Activity实际上没有意义 - Activity就像桌面计算机上的窗口。 Windows不包含其他窗口。您的MainActivity
根本不知道如何处理viewhandler
活动。
在这种特殊情况下,您应该将所有代码从viewhandler
类移到MainActivity
。如果您想将该逻辑移到单独的类中,则viewhandler
不应该是活动。
答案 1 :(得分:0)
不要在没有任何特殊需求的情况下扩展Activity类。使用POJO代替它并使用组合而不是继承。它更干净的方式
public class ViewHandler {
private Activity activity;
public Button btndo;
public TextView text1;
public EditText et1;
ViewHandler(Activity activity) {
this.activity = activity;
}
private View findViewById(int id) {
return activity.findViewById(id);
}
private Button.OnClickListener btndolistener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
text1.setText("test");
}
};
public void onCreate(Bundle savedInstanceState) {
activity.setContentView(R.layout.layout);
btndo = (Button) findViewById(R.id.button1);
btndo.setOnClickListener(btndolistener);
text1 = (TextView) findViewById(R.id.textView1);
et1 = (EditText) findViewById(R.id.editText1);
}
}