Android 在活动之间转换
我正在制作android应用程序,我在其中面临着问题。问题的概述如下所示 三项活动A、B、C A是主要活动 B是sharepref活动 C是使用B(共享性能)中的id存储从服务器获取数据的列表活动 当我安装应用程序并在B中设置id并单击保存按钮时,它会转到A 但在剩下的时间里,每当我点击B中的保存设置,它就会转到c 请帮助我,每当我在活动B中单击savesetting时,它应该总是转到活动A 让我知道是否需要上传代码(所有活动都在f9中运行) 这是我想回来的主要课程(根据问题A) 这是列表活动,称为列表或(根据问题C) 这是我想去A的SharedRef,它分为两类Android 在活动之间转换,android,Android,我正在制作android应用程序,我在其中面临着问题。问题的概述如下所示 三项活动A、B、C A是主要活动 B是sharepref活动 C是使用B(共享性能)中的id存储从服务器获取数据的列表活动 当我安装应用程序并在B中设置id并单击保存按钮时,它会转到A 但在剩下的时间里,每当我点击B中的保存设置,它就会转到c 请帮助我,每当我在活动B中单击savesetting时,它应该总是转到活动A 让我知道是否需要上传代码(所有活动都在f9中运行) 这是我想回来的主要课程(根据问题A) 这是列表活动,
public class Prefs {
private SharedPreferences _prefs = null;
private Editor _editor = null;
private String _useremailaddress = "Unknown";
private String _serverurl = "http://chinar.gofreeserve.com/db.php";
public Prefs(Context context) {
this._prefs = context.getSharedPreferences("PREFS_PRIVATE", Context.MODE_PRIVATE);
this._editor = this._prefs.edit();
}
public String getValue(String key, String defaultvalue) {
if (this._prefs == null) {
return "Unknown";
}
return this._prefs.getString(key, defaultvalue);
}
public void setValue(String key, String value) {
if (this._editor == null) {
return;
}
this._editor.putString(key, value);
}
public String getEmail() {
if (this._prefs == null) {
return "Unknown";
}
this._useremailaddress = this._prefs.getString("emailaddress", "noidea");
return this._useremailaddress;
}
public String getServer() {
if (this._prefs == null) {
return "http://chinar.gofreeserve.com";
}
this._serverurl = this._prefs.getString("serverurl", "http://chinar.gofreeserve.com/");
return this._serverurl;
}
public void setEmail(String newemail) {
if (this._editor == null) {
return;
}
this._editor.putString("emailaddress", newemail);
}
public void setServer(String serverurl) {
if (this._editor == null) {
return;
}
this._editor.putString("serverurl", serverurl);
}
public void save() {
if (this._editor == null) {
return;
}
this._editor.commit();
}
}
以及pref使用的最后一个类
public class ShowSettings extends ControlMenu {
Prefs myprefs = null;
final String tag = "CH12:ShowSettings";
AlertDialog.Builder adb;// = new AlertDialog.Builder(this);
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.showsettings);
this.myprefs = new Prefs(getApplicationContext());
// load screen
PopulateScreen();
this.adb = new AlertDialog.Builder(this);
final Button savebutton = (Button) findViewById(R.id.settingssave);
// create anonymous click listener to handle the "save"
savebutton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try {
// get the string and do something with it.
final EditText email = (EditText) findViewById(R.id.emailaddress);
if (email.getText().length() == 0) {
AlertDialog ad = ShowSettings.this.adb.create();
ad.setMessage("Please Enter Your Email Address");
ad.show();
return;
}
final EditText serverurl = (EditText) findViewById(R.id.serverurl);
if (serverurl.getText().length() == 0) {
AlertDialog ad = ShowSettings.this.adb.create();
ad.setMessage("Please Enter The Server URL");
ad.show();
return;
}
// save off values
ShowSettings.this.myprefs.setEmail(email.getText().toString());
ShowSettings.this.myprefs.setServer(serverurl.getText().toString());
ShowSettings.this.myprefs.save();
// we're done!
finish();
} catch (Exception e) {
Log.i(ShowSettings.this.tag, "Failed to Save Settings [" + e.getMessage() + "]");
}
}
});
}
private void PopulateScreen() {
try {
final EditText emailfield = (EditText) findViewById(R.id.emailaddress);
final EditText serverurlfield = (EditText) findViewById(R.id.serverurl);
emailfield.setText(this.myprefs.getEmail());
serverurlfield.setText(this.myprefs.getServer());
} catch (Exception e) {
}
}
}
我假设您有一个保存设置按钮。在该按钮的onClickListener中,使用意图移动到活动A 意图代码可能如下所示。我假定您的包名为com.foo.bar
Intent intent=new Intent();
intent.setClassName("com.foo.bar","com.foo.bar.ActivityA");
startActivity(intent);
是的,这里没有足够的信息继续。@ColdForged我已经用它应该能工作的所有代码进行了更新。是在清单文件中定义的活动。我看不到在清单文件中定义的意图。所以,我猜你不能回到A。因为它扩展了ControlMenu类,所以它会自动调用menuCould you please u/l prjct作为zip。我会调查的。因为它看起来应该可以正常工作。我已经跟踪了这个链接
public class ShowSettings extends ControlMenu {
Prefs myprefs = null;
final String tag = "CH12:ShowSettings";
AlertDialog.Builder adb;// = new AlertDialog.Builder(this);
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.showsettings);
this.myprefs = new Prefs(getApplicationContext());
// load screen
PopulateScreen();
this.adb = new AlertDialog.Builder(this);
final Button savebutton = (Button) findViewById(R.id.settingssave);
// create anonymous click listener to handle the "save"
savebutton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try {
// get the string and do something with it.
final EditText email = (EditText) findViewById(R.id.emailaddress);
if (email.getText().length() == 0) {
AlertDialog ad = ShowSettings.this.adb.create();
ad.setMessage("Please Enter Your Email Address");
ad.show();
return;
}
final EditText serverurl = (EditText) findViewById(R.id.serverurl);
if (serverurl.getText().length() == 0) {
AlertDialog ad = ShowSettings.this.adb.create();
ad.setMessage("Please Enter The Server URL");
ad.show();
return;
}
// save off values
ShowSettings.this.myprefs.setEmail(email.getText().toString());
ShowSettings.this.myprefs.setServer(serverurl.getText().toString());
ShowSettings.this.myprefs.save();
// we're done!
finish();
} catch (Exception e) {
Log.i(ShowSettings.this.tag, "Failed to Save Settings [" + e.getMessage() + "]");
}
}
});
}
private void PopulateScreen() {
try {
final EditText emailfield = (EditText) findViewById(R.id.emailaddress);
final EditText serverurlfield = (EditText) findViewById(R.id.serverurl);
emailfield.setText(this.myprefs.getEmail());
serverurlfield.setText(this.myprefs.getServer());
} catch (Exception e) {
}
}
}
Intent intent=new Intent();
intent.setClassName("com.foo.bar","com.foo.bar.ActivityA");
startActivity(intent);