我正在制作我正面临问题的Android应用程序。问题的概述是这样的 三项活动A B C
A是主要活动 B是sharepref activty C是列表活动,它使用B(共享性能)
中的id存储从服务器获取数据当我安装应用程序并在B中设置id并单击“保存”按钮时,它将转到A. 但是在剩下的时间里,当我点击B中的保存设置时,它会转到c
每当我点击活动B中的保存设置时,请帮助我,它应该总是进入活动A
让我知道代码是否需要上传(所有活动都在运行f9)
以下是我想回来的主要课程(A根据问题)
public class ControlMenu extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
Intent intent = new Intent(this, ShowSettings.class);
startActivity(intent);
break;
case R.id.services:
Intent intent2 = new Intent(this, Test.class);
startActivity(intent2);
break;
case R.id.Quit:
finish();
break;
default:
break;
}
return true;
}
}
这是列表激活的列表或(根据问题的C)
public class Test extends ListActivity {
Prefs myprefs = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listplaceholder);
calling the list
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
Intent intent = new Intent(this, ShowSettings.class);
startActivity(intent);
break;
case R.id.services:
Intent intent2 = new Intent(this, Test.class);
startActivity(intent2);
break;
case R.id.Quit:
finish();
break;
default:
break;
}
return true;
}
}
这是我要去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) {
}
}
}
答案 0 :(得分:1)
我假设你有一个saveSetting按钮。在该按钮的onClickListener中,使用Intent移动到Activity A.
意图的代码可能如下。我假设你的包名是com.foo.bar
Intent intent=new Intent();
intent.setClassName("com.foo.bar","com.foo.bar.ActivityA");
startActivity(intent);