2016-04-19 8 views
0

Ich habe ein Programm, das setContentView verwendet, um ein Layout anzuzeigen und gleichzeitig Text in einem anderen Layout zu aktualisieren.setText zeigt keinen Text in einem anderen Layout

Ich finde nicht, dass der Text aktualisiert wird, aber das Abrufen von Werten, die von getText gesetzt werden, gibt den aktualisierten Wert.

Ich möchte, dass der mit setText eingestellte Wert angezeigt wird.

public static class Login_fragment extends AppCompatActivity 
{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 

    } 
    public void login_onClick(View view) 
    { 
     Toast.makeText(this,"Login Succesful",Toast.LENGTH_SHORT).show(); 

     startActivity(new Intent(this,MainActivity.class)); 
     LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rootview=inflater.inflate(R.layout.nav_header_main,null,false); 
     LinearLayout linearLayout=(LinearLayout)rootview.findViewById(R.id.nav_linear_id); 
     TextView textView=(TextView) rootview.findViewById(R.id.login_name_drawer); 
     String viewq=textView.getText().toString(); 
     Log.v("First",viewq); 
     textView.setText("def"); 
     if(textView.getParent()!=null) { 
      ((ViewGroup) textView.getParent()).removeView(textView); 
     } 
     linearLayout.addView(textView); 
     viewq=textView.getText().toString(); 

     Log.v("Second",viewq); 
    } 

Meine XML-Layout-Datei ist:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="@dimen/nav_header_height" 
android:background="@drawable/side_nav_bar" 
android:gravity="bottom" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:theme="@style/ThemeOverlay.AppCompat.Dark" 
android:id="@+id/nav_linear_id"> 

<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/login_name_drawer" 
android:text="abc"/> 

</LinearLayout> 

Ich möchte den Text "def" aktualisiert und zeigt zu

+0

Sie andere Ansicht betrachten, die loginlayout ist. und Sie können kein anderes Aktivitätslayout sehen. –

+0

Aber Sie haben bereits eine neue Aktivität gestartet. Sie können Wert durch Absicht in Ihrer _MainActivity_ übergeben – Piyush

Antwort

0

1.) Verwenden SharedPreference die Benutzerwerte in LoginActivity zu speichern. Dann in der MainActivity die Werte aus SharedPreference abrufen und den Wert auf die textView festlegen.

LoginActivity

 SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context. 
MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putString("user", "test"); 
    editor.commit(); 

In MainActivity OnCreate-()

 SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context. 
MODE_PRIVATE); 
     String user=sharedPref.getString("user",""); 
    TextView textView=(TextView) findViewById(R.id.login_name_drawer); 
    textView.setText(user); 

2.) Verwenden Intent Nutzwert Wert in das Textview MainActivity gesetzt zu übergeben.

LoginActivity

 Intent intent = new Intent(this, MainActivity.class); 
    intent.putExtra("user","value"); 
    startActivity(intent); 

In MainActivity onCreate()

 String user= getIntent().getExtras().getString("user"); 
     TextView textView=(TextView) findViewById(R.id.login_name_drawer); 
     textView.setText(user); 

Hoffnung, dies hilft Ihnen

Verwandte Themen