有点点长
我现在要在非activity的类里面,传递参数给activity那里,但是发觉传不了,这是我的测试代码,
求过路人给点思路
非activity普通类:
public class HandlerTest {
private Handler handler = null;
private MainActivity mainActivity = null;
public HandlerTest(){
}
public void init(){//初始化
mainActivity = MainActivity.getMainActivity();
handler = mainActivity.getHandler();
}
public void sendMsg(){//发送信息
Message msg = new Message();
msg.what = MainActivity.TEST;
handler.sendMessage(msg);
}
}
activity类:
public class MainActivity extends Activity {
public static final int TEST = 0;
private TextView tv = null;
private HandlerTest ht = null;
private Button b = null;
private static MainActivity mainActivity = new MainActivity();public static MainActivity getMainActivity() {//其实目的是返回本身这个类,想获得里面的控件
return mainActivity;
}
private Handler handler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case TEST:{
Toast.makeText(MainActivity.this, "test handler", Toast.LENGTH_SHORT).show();
tv.setText("hello");
}break;
default:break;
}
}
};
public Handler getHandler() {
return handler;
}
public void setHandler(Handler handler) {
this.handler = handler;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)this.findViewById(R.id.TextViewTestID);
b = (Button)this.findViewById(R.id.ButtonTestID);
ht = new HandlerTest();
b.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
ht.init();
ht.sendMsg(); //发送信息
}
});
}
}要是我点一下Button按钮,程序立马就崩溃了,看来这样的传递参数是不行的,或者自己操作方式不对。。
所以想问下大家,到底怎样才能把参数从非activity传递到activity才是对的?另外想讨论下,
其实我是想把activity里面的控件的那些监听的那些动作放在非activity那里实现的,
然后activity和非activity之间的控件是指向同一个地址的,所以我才会有
private static MainActivity mainActivity = new MainActivity();
这个,目的是想实现让各个类操控的控件相一致的,会这样把它们分开来,是因为在同一个activity里面的控件是在太多了,
感觉有点多东西,所以才把它们拆开来,弄成两个一个是main的activity,一个是实现
main的里面的控件实现函数。
另外想问一下,当一个mainActivity里面的控件过多的时候,你们是怎么排版,或者怎么处理的?
是不是都是放在同一个activity里面,然后排版,排好的那种,还是像我这样,还是说怎么样的?
我初学,好奇,希望分享下有点点长
但是我好想找个人能讨论下,希望回帖,谢谢回帖。。
类控件JavaAndroid
我现在要在非activity的类里面,传递参数给activity那里,但是发觉传不了,这是我的测试代码,
求过路人给点思路
非activity普通类:
public class HandlerTest {
private Handler handler = null;
private MainActivity mainActivity = null;
public HandlerTest(){
}
public void init(){//初始化
mainActivity = MainActivity.getMainActivity();
handler = mainActivity.getHandler();
}
public void sendMsg(){//发送信息
Message msg = new Message();
msg.what = MainActivity.TEST;
handler.sendMessage(msg);
}
}
activity类:
public class MainActivity extends Activity {
public static final int TEST = 0;
private TextView tv = null;
private HandlerTest ht = null;
private Button b = null;
private static MainActivity mainActivity = new MainActivity();public static MainActivity getMainActivity() {//其实目的是返回本身这个类,想获得里面的控件
return mainActivity;
}
private Handler handler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case TEST:{
Toast.makeText(MainActivity.this, "test handler", Toast.LENGTH_SHORT).show();
tv.setText("hello");
}break;
default:break;
}
}
};
public Handler getHandler() {
return handler;
}
public void setHandler(Handler handler) {
this.handler = handler;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)this.findViewById(R.id.TextViewTestID);
b = (Button)this.findViewById(R.id.ButtonTestID);
ht = new HandlerTest();
b.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
ht.init();
ht.sendMsg(); //发送信息
}
});
}
}要是我点一下Button按钮,程序立马就崩溃了,看来这样的传递参数是不行的,或者自己操作方式不对。。
所以想问下大家,到底怎样才能把参数从非activity传递到activity才是对的?另外想讨论下,
其实我是想把activity里面的控件的那些监听的那些动作放在非activity那里实现的,
然后activity和非activity之间的控件是指向同一个地址的,所以我才会有
private static MainActivity mainActivity = new MainActivity();
这个,目的是想实现让各个类操控的控件相一致的,会这样把它们分开来,是因为在同一个activity里面的控件是在太多了,
感觉有点多东西,所以才把它们拆开来,弄成两个一个是main的activity,一个是实现
main的里面的控件实现函数。
另外想问一下,当一个mainActivity里面的控件过多的时候,你们是怎么排版,或者怎么处理的?
是不是都是放在同一个activity里面,然后排版,排好的那种,还是像我这样,还是说怎么样的?
我初学,好奇,希望分享下有点点长
但是我好想找个人能讨论下,希望回帖,谢谢回帖。。
类控件JavaAndroid
解决方案 »
- android如何改变输出String值的字体大小
- 为什么我的ContentResolver在另一个程序中调用会启动原来的应用程序(附源码)
- 一个类继承于Application,启动应用的时候,这个类是什么时候创建的呢?
- android模拟器太卡了
- 关于ontouch()函数
- 将android源码导入eclipse的问题
- 关于Activity跳转,只能求高手了!!!
- activityGroup 里startActivityForResult的解决
- 在eclipse中,鼠标悬停在类名、方法名上,没有相关信息,一片空白,是怎么回事?
- 新手问题,关于gridview空指针
- 安卓APN问题求助
- android怎样在真机上调试
package com.lxl;import android.content.Context;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;public class MyImageView extends Button implements OnClickListener,
OnLongClickListener, OnTouchListener {
private int doornum = 0;
private RelativeLayout layout;
private LayoutParams lp;
private TextView advicetext;
private boolean flag = false;// 当flag为false的时候表示关门,为true的时候表示开门 public MyImageView(Context ParentContext, int doornum,
RelativeLayout layout, TextView advicetext) {
// TODO Auto-generated constructor stub
super(ParentContext);
this.setOnClickListener(this);
this.setOnLongClickListener(this);
this.setOnTouchListener(this);
this.doornum = doornum;
this.lp = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
this.lp.setMargins(0, 10, 0, 10);
this.layout = layout;
this.advicetext = advicetext;
closeDoor();
} @Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
} @Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub return false;
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("你点击的按钮为" + doornum + "号按钮");
if (this.flag) {
closeDoor();
} else {
openDoor();
}
this.flag = !this.flag;
this.advicetext.setText(doornum + "号门处于" + (flag ? "开启" : "关闭") + "状态");
} public LayoutParams getLayoutParams() {
return this.lp;
} public void closeDoor() {
this.setBackgroundColor(Color.RED);
} public void openDoor() {
this.setBackgroundColor(Color.GREEN);
} public void setLeft() {
this.lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
} public void setRight() {
this.lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
} public void addView() {
this.layout.addView(this, lp);
}
}
帮你改了下...import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;public class SecActivity extends Activity {
public static final int TEST = 0; public TextView tv = null;
private HandlerTest ht = null;
private Button b = null; private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case TEST:
Toast.makeText(SecActivity.this, "test handler", Toast.LENGTH_SHORT).show();
tv.setText("hello");
break;
default:
break;
}
}
}; public Handler getHandler() {
return handler;
} public void setHandler(Handler handler) {
this.handler = handler;
} protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sec); tv = (TextView) this.findViewById(R.id.editText1);
b = (Button) this.findViewById(R.id.button1);
ht = new HandlerTest(this);
b.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
ht.init();
ht.sendMsg(); // 发送信息
}
});
}
}
import android.app.Activity;
import android.os.Handler;
import android.os.Message;public class HandlerTest {
private Handler handler = null; private SecActivity mainActivity = null; public HandlerTest(Activity ac) {
mainActivity = (SecActivity) ac;
} public void init() {// 初始化
handler = mainActivity.getHandler();
} public void sendMsg() {// 发送信息
Message msg = new Message();
msg.what = SecActivity.TEST;
handler.sendMessage(msg);
}
}