Android 在活动之间转换

Android 在活动之间转换,android,Android,我正在制作android应用程序,我在其中面临着问题。问题的概述如下所示 三项活动A、B、C A是主要活动 B是sharepref活动 C是使用B(共享性能)中的id存储从服务器获取数据的列表活动 当我安装应用程序并在B中设置id并单击保存按钮时,它会转到A 但在剩下的时间里,每当我点击B中的保存设置,它就会转到c 请帮助我,每当我在活动B中单击savesetting时,它应该总是转到活动A 让我知道是否需要上传代码(所有活动都在f9中运行) 这是我想回来的主要课程(根据问题A) 这是列表活动,

我正在制作android应用程序,我在其中面临着问题。问题的概述如下所示 三项活动A、B、C

A是主要活动 B是sharepref活动 C是使用B(共享性能)中的id存储从服务器获取数据的列表活动

当我安装应用程序并在B中设置id并单击保存按钮时,它会转到A 但在剩下的时间里,每当我点击B中的保存设置,它就会转到c

请帮助我,每当我在活动B中单击savesetting时,它应该总是转到活动A

让我知道是否需要上传代码(所有活动都在f9中运行)

这是我想回来的主要课程(根据问题A)

这是列表活动,称为列表或(根据问题C)

这是我想去A的SharedRef,它分为两类

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);