1

2つのアクティビティがあります1.Register.java2.SecureXActivity.java[登録]アクティビティで、共有設定を使用してアプリケーションの登録を行っています。共有設定を使用して、登録アクティビティを1回だけ表示しました。今、私の要件は、登録時に一度だけ表示される登録アクティビティからユーザー名を取得し、SecureXActivityアクティビティに保存することです。登録後、このアクティビティのみがユーザーに表示されます。それで、この点で私を助けてください?私はアンドロイドに不慣れです。

私のコードを以下に示します

Register.java

public class Register extends Activity
{
public static final String PREFS_NAME = "LoginPrefs";
public static final String USER_NAME = "USER";

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register);

    /*
     * Check if we successfully logged in before.
     * If we did, redirect to home page
     */
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    if (settings.getString("logged", "").toString().equals("logged")) 
    {
        Intent intent = new Intent(Register.this, SecureXActivity.class);
        startActivity(intent);
    }

    Button b = (Button) findViewById(R.id.btnRegister);
    b.setOnClickListener(new OnClickListener() 
    {
        public void onClick(View v) {
            EditText username = (EditText) findViewById(R.id.reg_employeeid);
            EditText password = (EditText) findViewById(R.id.reg_password);
            String welcm ="Welcome";
            String space = " ";
            EditText firstname = (EditText)findViewById(R.id.reg_firstname);
            EditText lastname = (EditText)findViewById(R.id.reg_lastname);
            String getfirstname = firstname.getText().toString();
            String getlasttname = lastname.getText().toString();
            String welcome=welcm.concat(space).concat(getfirstname).concat(space).concat(getlasttname);





            if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 ) 
            {
                if(username.getText().toString().equals("test") && password.getText().toString().equals("test")) 
                {
                    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("logged", "logged");
                    editor.commit();    
                    Intent intent = new Intent(Register.this, SecureXActivity.class);
                    intent.putExtra("name", welcome);
                    startActivity(intent);
                }
            }
        }
    });
}
} 

SecureXActivity.java

public void onCreate(Bundle savedInstanceState)
{
    Thread.setDefaultUncaughtExceptionHandler(new exceptionHandler(this));
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
        Bundle extras =getIntent().getExtras();

    if (extras != null)
    {
        String value = extras.getString("name");
        TextView txtwelcm= (TextView)findViewById(R.id.textViewwelcm);
        txtwelcm.setText(value);
    }
}

あるアクティビティから別のアクティビティへの値が必要であり、値を別のアクティビティに保存する必要があります。上記のコードでは、インテントを使用してこれを実行しました。ただし、問題は、値が2番目のアクティビティで1回だけ表示されることです。戻るボタンまたはホームキーを押しても値が表示されない方法

@Picarusへの応答として追加されました:

問題は、同じ共有設定を使用して、登録アクティビティを1回だけ表示していることです。ただし、SecureXアクティビティに名前が表示されていません。同じ共有設定を使用して、レジスタアクティビティからsecurexアクティビティに値を運ぶことは可能ですか。

コード全体を以下にもう一度示しますRegister.java

    public class Register extends Activity 
    { 
public static final String PREFS_NAME = "LoginPrefs"; 


@Override 
public void onCreate(Bundle savedInstanceState)  
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.register); 

    /* 
     * Check if we successfully logged in before. 
     * If we did, redirect to home page 
     */ 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    if (settings.getString("logged", "").toString().equals("logged"))  
    { 
        Intent intent = new Intent(Register.this, SecureXActivity.class); 
        startActivity(intent); 
    } 

    Button b = (Button) findViewById(R.id.btnRegister); 
    b.setOnClickListener(new OnClickListener()  
    { 
        public void onClick(View v) { 
            EditText username = (EditText) findViewById(R.id.reg_employeeid); 
            EditText password = (EditText) findViewById(R.id.reg_password); 
            String welcm ="Welcome"; 
            String space = " "; 
            EditText firstname = (EditText)findViewById(R.id.reg_firstname); 
            EditText lastname = (EditText)findViewById(R.id.reg_lastname); 
            String getfirstname = firstname.getText().toString(); 
            String getlasttname = lastname.getText().toString(); 
            String welcome=welcm.concat(space).concat(getfirstname).concat(space).concat(getlasttname); 





            if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 )  
            { 
                if(username.getText().toString().equals("test") && password.getText().toString().equals("test"))  
                { 
                    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
                    SharedPreferences.Editor editor = settings.edit(); 
                    editor.putString("name", welcome); 
                    editor.commit();     
                    Intent intent = new Intent(Register.this, SecureXActivity.class); 
                    //intent.putExtra("name", welcome); 
                    startActivity(intent); 
                } 
            } 
        } 
    }); 
} 
} 

SecureXActivity.java

public class SecureXActivity extends Activity 
{ 
public static final String PREFS_NAME = "LoginPrefs"; 

private ListView m_listview; 
Button btnSendlogs; 
Button btnMailadmin; 
Button btnContactSupport; 
Button btnSettings; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    Thread.setDefaultUncaughtExceptionHandler(new exceptionHandler(this)); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    //Here we are setting the installation date of a application 
    ContextWrapper context = this; 
    PackageManager packageManager = context.getPackageManager(); 
    ApplicationInfo appInfo; 
    try 
    { 
        appInfo = packageManager.getApplicationInfo("com.simsys.securex", 0); 
        String sourceDir= appInfo.sourceDir; 
        long dateTimeSync= new File(sourceDir).lastModified(); 
        String DateTimeStamp=getDate(dateTimeSync, "dd/MM/yyyy hh:mm:ss"); 
        String dateTimeSync2="Installed_Date:"; 
        String dateTimeSync3=dateTimeSync2.concat(DateTimeStamp); 
        TextView txtCurrentTime= (TextView)findViewById(R.id.textViewdatetime); 
        txtCurrentTime.setText(dateTimeSync3); 
    }  
    catch (NameNotFoundException e)  
    { 
        e.printStackTrace(); 
    } 
    //Here We Welcome the user 

    //List View 
    m_listview = (ListView) findViewById(R.id.list_view); 
    ArrayList<String> listItems=new ArrayList<String>(); 
    listItems.add("CAMERA"); 
    listItems.add("RECORDER"); 
    ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); 

    m_listview.setAdapter(adapter); 
    if(isBluetoothServiceRunning()) 
    { 
        listItems.add("BLUETOOTH"); 
    } 
    if(isGprsServiceRunning()) 
    { 
        listItems.add("GPRS"); 
    } 
    if(isWifiServiceRunning()) 
    { 
        listItems.add("WIFI"); 
    } 
    adapter.notifyDataSetChanged(); 
    //Call to Buttons Functionality 
    btnSendlogs = (Button) findViewById(R.id.button_sendlogs); 
    btnSendlogs.setOnClickListener(myhandler1); 
    btnMailadmin=(Button) findViewById(R.id.button_mailtoadmin); 
    btnMailadmin.setOnClickListener(MailadminHandler); 
    btnContactSupport = (Button) findViewById(R.id.button_contactsupport); 
    btnContactSupport.setOnClickListener(ContactSupportHandler); 

} 

//Navigation from Registration to Main page 
public boolean onCreateOptionsMenu(Menu menu)  
{ 
    MenuInflater Inflater = getMenuInflater(); 
    Inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (item.getItemId() == R.id.logout) 
    { 
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

        String data2=settings.getString("name", ""); 
        TextView txtwelcm= (TextView)findViewById(R.id.textViewwelcm); 
        txtwelcm.setText(data2); 
        SharedPreferences.Editor editor = settings.edit(); 
        editor.remove("name"); 
        editor.commit(); 
        finish(); 
    } 
    return super.onOptionsItemSelected(item); 
} 
4

2 に答える 2

1

sharedPreferencesを実装するには、次のコードを使用します

 Sharedpreferences myPref = this.getSharedPreferneces("your_file_name",MODE);
 SharedPreferences.Editor editor = myPref.edit();
 editor.putString("String_Name",value);
 editor.putInt("Int_Name","value");

SharedPreferencesから取得するには

   Sharedpreferences myPref = this.getSharedPreferneces("your_file_name",MODE);  
   String stringValue = myPref.getStirng("String_Name","DEFAULT_VALUE");
于 2012-08-01T11:57:21.753 に答える
0

Register.javaで行うのと同じ方法で、任意のアクティビティ(SecureXActivity)からSharedPreferencesを取得できます。

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
settings.getString("logged", "");

やってみました?あなたが見つけた問題は何ですか?

編集:多分それはあなたがonCreateからそれをロードしようとしたという事実のためです。更新またはホームをクリックしても、これは呼び出されません。アプリでそれを行うためのより適切なポイントを見つける必要があります。

于 2012-08-01T10:53:52.137 に答える