Я думаю, что это то, что вам нужно:
using System;
using System.Xml.Linq;
class Test
{
static void Main()
{
XNamespace ns = "http://www.acme.com/ABC";
DateTimeOffset date = new DateTimeOffset(2011, 9, 16, 10, 43, 54, 91,
TimeSpan.FromHours(1));
XDocument doc = new XDocument(
new XElement(ns + "ABC",
new XAttribute("xmlns", ns.NamespaceName),
new XAttribute(XNamespace.Xmlns + "xsi",
"http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute("fileName", "acmeth.xml"),
new XAttribute("date", date),
new XAttribute("origin", "TEST"),
new XAttribute("ref", "XX_88888")));
Console.WriteLine(doc);
}
}
Если вы используете startActivityForResult()
, то нет необходимости прослушивать вызов onResume()
. У него есть метод обратного вызова, в котором вы можете написать код прокрутки в зависимости от вашего состояния.
Например:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1); //here 1 is the request code
В вашем SecondActivity установите данные, которые вы хотите вернуть обратно в FirstActivity. Если вы не хотите возвращаться назад, не устанавливайте ничего.
Например: в SecondActivity:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_OK,returnIntent);
finish();
Теперь в своем классе FirstActivity напишите следующий код для метода onActivityResult ().
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
//case 2
//Write your code
}
}
}
@ rafsanahmad007 ответ хороший, но если вам действительно нужно использовать onResume()
, есть несколько способов приблизиться к нему.
Один из вариантов - установить флаг boolean
внутри onActivityResult()
, а затем проверить его в onResume()
:
private boolean returningFromResult = false;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FOO) {
this.returningFromResult = true;
// ...
}
}
@Override
protected void onResume() {
super.onResume();
if (returningFromResult) {
// special case
} else {
// normal case
}
}
Другой вариант - проверить внутри onCreate()
, есть ли параметр savedInstanceState
нулевой. Если это ноль, это означает, что вы запускаете в первый раз. Затем вы можете объединить это с логикой в onResume()
, чтобы определить, был ли вызван onResume()
более одного раза:
private boolean isFirstOnResume;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.isFirstOnResume = (savedInstanceState == null);
// ...
}
@Override
protected void onResume() {
super.onResume();
if (isFirstOnResume) {
this.isFirstOnResume = false;
// normal case
} else {
// special case
}
}
Тем не менее, если вы можете просто использовать onActivityResult()
для выполнения вашей логики, это будет быть лучшим путем.