我正在创建一个android应用程序,它需要能够在另一个全局类中的几种方法中在多个android Activity 布局上设置contentview。因此,当我从新 Activity onCreate 调用该方法时,按钮和 TextView 将由 findviewbyId 通过先前定义的类中的方法分配。示例代码如下所示。
public void executeWorkItem() {
setContentView(R.layout.activity_message);
Button button = (Button) findViewById(R.id.btnSendSMS);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
EditText textPhone = (EditText) findViewById(R.id.phoneNum);
EditText textSms = (EditText) findViewById(R.id.smsContent);
final String phoneNumber = textPhone.getText().toString();
final String message = textSms.getText().toString();
Map<String, Object> results = new HashMap<String, Object>();
results.put("phoneNmbr", "" + phoneNumber);
results.put("message", "" + message);
}
});
}
因此,当我从如下所示的 Activity 中调用此方法时,应该执行该方法而不会出现 null 错误。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = (MyApplication)getApplication();
// Call a custom application method
app.executeWorkItem();
}
因此,我应该为此创建一个应用程序类,还是必须创建一个扩展 Activity 的对象并在其中调用该对象方法? 注意:我应该能够创建可以执行类似操作的不同方法。
最佳答案
非常容易做到。您所需要的只是一个像 BaseActivity 这样的父 Activity ,然后所有其他 Activity 都可以简单地扩展该父 Activity ,如下所示:
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_message);
Button button = (Button) findViewById(R.id.btnSendSMS);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
EditText textPhone = (EditText) findViewById(R.id.phoneNum);
EditText textSms = (EditText) findViewById(R.id.smsContent);
final String phoneNumber = textPhone.getText().toString();
final String message = textSms.getText().toString();
Map<String, Object> results = new HashMap<String, Object>();
results.put("phoneNmbr", "" + phoneNumber);
results.put("message", "" + message);
}
});
}
}
然后您的所有其他 Activity 都会扩展父 Activity ,如下所示:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Do not call setContentView again
}
}
public class SecondActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Do not call setContentView again
}
}
如果您注意到 super.onCreate(savedInstanceState)
它只是调用其父类的 onCreate 方法,在本例中为 BaseActivity(进而调用 Activity 类)。
关于java - 来自另一个类的多个 Activity 的 setContentView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31839647/