Member 13366692 Ответов: 0

Sharedpreferences не работает в действии


Я пытаюсь получить SharedPreferences в действии и установить значение в качестве заголовка панели действий, но я не могу получить значение в main_activity , но я могу получить значение в другом , я не знаю, почему и как . это мой код для сохранения SharedPreferences:

public static final String Colloge_section="MyPrefsFile";
SharedPreferences.Editor 
editor=getSharedPreferences(Colloge_section,MODE_PRIVATE).edit();
        editor.putString("title_of_activity","student");
        editor.apply();

и вот как я получаю SharedPreferences :

SharedPreferences prfs = getSharedPreferences("MyPrefsFile", Context.MODE_PRIVATE);
    String Astatus = prfs.getString("title_of_activity", "");

    getSupportActionBar().setTitle(Astatus);


это моя основная активность :
public class KworldActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    NavigationView navigationView=null;
    Toolbar toolbar=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_kworld);
        //set the fragment initialty
        boolean net=isNetworkConnected();
        if (net==true)
        {
            RssMainFragment fragment=new RssMainFragment();
            android.support.v4.app.FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.fragment_container,fragment);
            fragmentTransaction.commit();
        }else {
            Toast.makeText(KworldActivity.this, "انت غير متصل بالانترنت الرجاء المحاوله لاحقا", Toast.LENGTH_LONG).show();
        }

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        SharedPreferences prfs = getSharedPreferences("MyPrefsFile", Context.MODE_PRIVATE);
        String Astatus = prfs.getString("titleofactivity", "");

        getSupportActionBar().setTitle(Astatus);

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }
    private boolean isNetworkConnected() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

        return cm.getActiveNetworkInfo() != null;
    }
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.kworld, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        if (id == R.id.action_about ) {
            Intent homeIntent=new Intent(KworldActivity.this,AboutActivity.class);
            startActivity(homeIntent);
            finish();
            //return true;
        }else if(id == R.id.action_develop ) {
            Intent homeIntent=new Intent(KworldActivity.this,DevelopActivity.class);
            startActivity(homeIntent);
            finish();
            //return true;
        }else if(id == R.id.action_share ) {
            //Share Code is here
            ApplicationInfo app = getApplicationContext().getApplicationInfo();
            String filePath = app.sourceDir;

            Intent intent = new Intent(Intent.ACTION_SEND);

            // MIME of .apk is "application/vnd.android.package-archive".
            // but Bluetooth does not accept this. Let's use "*/*" instead.
            intent.setType("*/*");

            // Append file and send Intent
            File originalApk = new File(filePath);

            try {
                //Make new directory in new location
                File tempFile = new File(getExternalCacheDir() + "/ExtractedApk");
                //If directory doesn't exists create new
                if (!tempFile.isDirectory())
                    if (!tempFile.mkdirs())
                        return true;
                //Get application's name and convert to lowercase
                tempFile = new File(tempFile.getPath() + "/" + getString(app.labelRes).replace(" ","").toLowerCase() + ".apk");
                //If file doesn't exists create new
                if (!tempFile.exists()) {
                    if (!tempFile.createNewFile()) {
                        return true;
                    }
                }
                //Copy file to new location
                InputStream in = new FileInputStream(originalApk);
                OutputStream out = new FileOutputStream(tempFile);

                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                in.close();
                out.close();
                System.out.println("File copied.");
                //Open share dialog
                intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tempFile));
                startActivity(Intent.createChooser(intent, "Share app via"));

            } catch (IOException e) {
                e.printStackTrace();
            }
            //return true;
        }else if(id == R.id.action_state ) {
            buadd();
            //return true;
        }

        return super.onOptionsItemSelected(item);
    }
    public void buadd(){
        SharedPreferences prfs = getSharedPreferences("MyPrefsFile", Context.MODE_PRIVATE);
        final String Std_id = prfs.getString("std_name", "");
        Thread runt=new Thread(){
            public void run(){
                CallLibViewer cweb=new CallLibViewer();
                cweb.OpenPhotoCopyViewer(Std_id);}
        };
        runt.start();
        try{
            runt.join();
            Toast t1 =Toast.makeText(this, ContactResult.CopyViewerMessage,Toast.LENGTH_LONG);
            View t2=t1.getView();
            t2.setBackgroundColor(Color.BLACK);
            t1.show();
        }
        catch(Exception ex){
        }
    }
    private void displaySelectedScreen(int itemId) {

        //creating fragment object
        Fragment fragment = null;
        SharedPreferences prfs = getSharedPreferences("MyPrefsFile", Context.MODE_PRIVATE);
        String Astatus = prfs.getString("titleofactivity", "");
        //initializing the fragment object which is selected
        switch (itemId) {
            case R.id.nav_news:
                fragment = new RssMainFragment();
                getSupportActionBar().setTitle(Astatus);
                break;
            case R.id.nav_lib:
                fragment = new LibraryFragment();
                getSupportActionBar().setTitle("المكـتبة");
                break;
            case R.id.nav_notify:
                fragment = new NotificationFragment();
                getSupportActionBar().setTitle("لوحة الاشعارات");
                break;
            case R.id.nav_manage:
                fragment = new OtherFragment();
                getSupportActionBar().setTitle("خدمـات اخرى");
                break;
            case R.id.nav_contact:
                fragment = new ContactFragment();
                getSupportActionBar().setTitle("تواصل معنا");
                break;
            case R.id.nav_setting:
                Intent homeIntent=new Intent(KworldActivity.this,SettingsActivity.class);
                startActivity(homeIntent);
                finish();
                break;
        }

        //replacing the fragment
        if (fragment != null) {
            FragmentManager manager = getSupportFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.replace(R.id.fragment_container, fragment);
            transaction.commit();

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {

        //calling the method displayselectedscreen and passing the id of selected menu
        displaySelectedScreen(item.getItemId());
        //make this method blank
        return true;
    }


}


Что я уже пробовал:

создайте новое действие и отредактируйте SharedPreferences, добавив editor.clear();

David Crow

Вы ссылаетесь на то и другое title_of_activity и titleofactivity- Это намеренно?

0 Ответов