我正在尝试使用反射来使用 MainActivity 类的私有属性,但我不知道我做错了什么。有人可以帮忙吗。这是我的代码:MainActivity 类,这是我从异常中得到的错误:java.lang.IllegalArgumentException: object is not an instance of the class
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private Controller scheduleFor = new Controller();
private TextView display ;
private TextView title ;
OnClickListener monListener = new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
scheduleFor.handleRequest("monday");}};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
display = (TextView)findViewById(R.id.scheduleView);
title = (TextView)findViewById(R.id.day);
ImageButton monButton = (ImageButton)findViewById(R.id.monbutton);
monButton.setOnClickListener(monListener);
}
public void onStart(){
super.onStart();
display.setText("");
title.setText("Get your schedule");
}
}
public class MonHandler implements Handler {
private static final String TAG = "Scheduler";
@Override
public void handleIt(Object... args){
// TODO Auto-generated method stub
try{
Class<?> mainActivityClass = Class.forName("freesoft.nex.ec.MainActivity");
Field fDisplay = mainActivityClass.getDeclaredField("display");
Field fTitle = mainActivityClass.getDeclaredField("title");
fDisplay.setAccessible(true);
fTitle.setAccessible(true);
TextView dSchedule = (TextView) fDisplay.get(mainActivityClass);
TextView dTitle = (TextView)fTitle.get(mainActivityClass);
String schedule =
" 07h00 Breakfast\n" +
" 08h00 Department Metting\n" +
" 09h00 Class CIT 310\n" +
" 10h015 Class CIT 356\n" +
" 11h30 Class CIT 499\n" +
" 12h45 Lunch\n" +
" 14h00 Labs\n" +
" 17h00 Back home\n" +
" 21h00 F.H.E - ??\n";
String sDay = "Monday";
dSchedule.setText(schedule);
dTitle.setText("Schedule for " + sDay);
}catch (ClassNotFoundException e) {
e.printStackTrace();
Log.d(TAG, "-->" + e);
}catch(NoSuchFieldException x){
x.printStackTrace();
Log.d(TAG, "-->" + x);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d(TAG, "--> " + e.getMessage());
Log.d(TAG, "--> " + e.getCause());
Log.d(TAG, "-->" + e.getLocalizedMessage());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d(TAG, "-->" + e);
}
}
}