我目前正在自学Android编程,所以请以初学者可以理解的方式解释您的答案。
我正在尝试使用来自其他屏幕/活动的公共静态String对象来编辑TextView对象中的文本。 有两个公共静态字符串对象,分别称为crew_id和orderType(两者都初始化为空字符串)。名为NewOrderActivity的Activity中有一个TextView对象,其id为“crew_id_and_ordertype”。
我的NewOrderActivity.class代码目前是这样的:
启动NewOrderActivity按钮的代码是:
public void goToNewOrder(View view)
{
final EditText edit = (EditText) findViewById(R.id.editText1); //gets the string from the EditText object
crew_id = edit.getText().toString();
Intent k = new Intent(CrewIDActivity.this, NewOrderActivity.class);
startActivity(k);
}
NewOrderActivity的代码是:
public class NewOrderActivity
extends Activity{
TextView info = (TextView)findViewById(R.id.crew_id_and_ordertype);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_order);
info.setText("Crew ID: " + CrewIDActivity.crew_id + "/n /n" + OrderingActivity.orderType);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.new_order, menu);
return true;
}
当我尝试从上一个活动转到NewOrderActivity时,该应用程序停止工作。 我究竟做错了什么?这是我试图编辑TextView对象的问题,还是其他问题?
答案 0 :(得分:0)
除非设置了视图,否则无法初始化组件。 TextView信息代码行应放在setContentView
public class NewOrderActivity
extends Activity{
TextView info = (TextView)findViewById(R.id.crew_id_and_ordertype);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_order);
info.setText("Crew ID: " + CrewIDActivity.crew_id + "/n /n" + OrderingActivity.orderType);
}
将其改为:
public class NewOrderActivity
extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_order);
TextView info = (TextView)findViewById(R.id.crew_id_and_ordertype);
info.setText("Crew ID: " + CrewIDActivity.crew_id + "/n /n" + OrderingActivity.orderType);
}