感谢大家为这个问题留出时间。 当我从另一个Activity调用appendToMessageHistory方法时,我需要附加一个editview。 第二个活动
EditText et;
Messaging msg = new Messaging(getApplicationContext(), et);
msg.appendToMessageHistory(username, messegestr);
关于消息传递活动。
private EditText messageHistoryText;
messageHistoryText = (EditText) findViewById(R.id.messageHistory);
private Context mCon;
public Messaging(Context applicationContext, EditText name) {
// TODO Auto-generated constructor stub
this.mCon = applicationContext;
this.messageHistoryText = name;
}
public Messaging() {
}//by default constructor
public void appendToMessageHistorysend(String username, String message) {
if (username != null && message != null) {
if (messageHistoryText != null) {
messageHistoryText.append(Html
.fromHtml(username1));
messageHistoryText.append(Html
.fromHtml(message1));
}
else {
Toast.makeText(mCon,
"hey yo not working value are null",
Toast.LENGTH_LONG).show();
}
}
}
}
}
我仍然为messageHistoryText获取null。 和应用程序崩溃 再次感谢你的时间
答案 0 :(得分:0)
在你的第一段代码中:
EditText et;
Messaging msg = new Messaging(getApplicationContext(), et);
msg.appendToMessageHistory(username, messegestr);
对象“et”未初始化...如果您尝试访问它,它将崩溃。
答案 1 :(得分:0)
活动生命周期由Android框架管理。在Activity中编写自定义构造函数是一个很大的错误(覆盖现有的构造函数是一些非常罕见的情况)。
在为Android开发时,不应该在自己的代码中调用Activity构造函数。当我说从不我的意思是从不!!!
要实例化一个活动:你必须使用Intent
并让Android完成这项工作。
在编码之前,请务必了解Android activity life-cycle
准确回答您的问题:
在自定义构造函数中使用它时, messageHistoryText
为null,因为您的活动Messaging
在初始化时不包含任何视图。
如果在设置Activity的内容之前调用它,方法findViewById
将始终返回null(无论id是什么)。
设置活动内容的最常用方法是使用setContentView方法调用Activity.onCreate()(但>>调用super.onCreate(bundle)
之后 否则你的活动将不会准备好来设置它的内容)