2015-02-14 3 views
-2

Я сделал 3 textviews, при нажатии на любой из них, я хочу, чтобы «Текст» внутри любого из этих textviews был отправлен в другой класс.Получение намерений и применение sharedpreferences

Это XML для TextViews

<TextView 
    android:id="@+id/brouni" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:gravity="left" 
    android:paddingTop="10dp" 
    android:text=" 1-I will help my brother go to university" 
    android:textSize="15dp" /> 

<TextView 
    android:id="@+id/goal2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="left" 
    android:paddingTop="10dp" 
    android:text=" 2-I will buy my mother a house" 
    android:textSize="15dp" /> 
<TextView 
    android:id="@+id/goal3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="left" 
    android:paddingTop="10dp" 
    android:text=" 3-I will finish this application" 
    android:textSize="15dp" /> 
</LinearLayout> 

И это класс Java, содержащий их

public class Family extends Activity implements OnClickListener { 
TextView brouni1; 
TextView goal2; 
TextView goal3; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.family); 
    goal3 = (TextView) findViewById(R.id.goal3); 
    goal3.setOnClickListener(this); 
    goal2 = (TextView) findViewById(R.id.goal2); 
    goal2.setOnClickListener(this); 
    brouni1 = (TextView) findViewById(R.id.brouni); 
    brouni1.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 

    switch (view.getId()) { 
     case R.id.brouni: 
      Intent open = new Intent(Family.this, Xp.class); 
      brouni1.getText(); 

      startActivity(open); 
      break; 
     case R.id.goal2: 
      Intent open1 = new Intent (Family.this , Xp.class); 
      startActivity(open1); 
      break; 
     case R.id.goal3: 
      Intent open11 = new Intent(Family.this , Xp.class); 
      startActivity(open11); 
      break; 
     } 
    } 
} 

И это класс Java Я хочу, чтобы текст внутри textview быть направляется на адрес

public class Xp extends Activity { 
Button accept; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.xp); 
    accept = (Button) findViewById(R.id.accept); 
    accept.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent i = new Intent(Xp.this, Drawer.class); 

      startActivity(i); 
      finish(); 
     } 
    }); 

} 

} 

И, наконец, это класс (Основной класс), который я хочу, чтобы тот же текст появился после выбора «Принять». И быть спасенным там, и может быть удалено, а также таким образом, чтобы позже было добавлено несколько текстов.

public class MainClass extends Activity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

Я оставил его пустым, чтобы вы, ребята, могли предложить мне правильный код, чтобы восстановить эти намерения и спасти их.

Реферат: Как получить мое намерение, содержащее текст в другом классе, и Как их применить sharedpreferences, чтобы сохранить их в классе, который они отправляют? ???

ответ

0

При передаче данных между Activity с, используйте Intent к putExtra, как ниже

case R.id.goal3: 
      Intent open11 = new Intent(Family.this , Xp.class); 
      open11.putExtra("intent_extra", goal3.getText().toString()); 
      startActivity(open11); 
      break; 

Когда ваш получавший Activity начинается, вы можете получить это значение, и, наконец, сохранить это значение в SharedPreference.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     String value = extras.getString("intent_extra"); 
     SharedPreferences settings = getSharedPreferences("intent_pref", 0); 
     SharedPReferences.Editor edit = settings.edit(); 
     edit.putString("intent_pref", value); 
     edit.apply(); 
    } 
} 
  • Подробнее о SharedPreference here.
  • Подробнее о Intent s here,
+0

Спасибо, но я хочу, чтобы получить намерение от TextView, которая была нажата, я имею в виду, что не должно быть цели 3. Это может быть любое другое «текстовое представление», как я могу это сделать? –

+0

Сделка с этим. Теперь я сделал еще одно текстовое сообщение, и я хочу изменить его на выбранный текст. например, если был выбран open, я хочу, чтобы он был равен 100, если был выбран open1, я хочу, чтобы его было 200, и если был открыт open11, я хочу, чтобы оно было 300 и так далее. –

+0

'Bundle extras = getIntent(). GetExtras(); if (extras! = Null) { Строковое значение = extras.getString ("intent_extra"); Настройки SharedPreferences = getSharedPreferences (PREFS_NAME, 0); SharedPreferences.Editor edit = settings.edit(); edit.putString (PREFS_NAME, значение); textV.setText (значение); xbnum.setText ("100XB"); edit.commit(); } ' –

Смежные вопросы