передать представление от одного действия другому - PullRequest
5 голосов
/ 20 декабря 2011

Я пытаюсь передать представление из одного занятия в другое занятие.

В своем первом занятии onButtonClick я перехожу к другому занятию, используя Intent.

Я написал эту строку setContentView(R.layout.main); в первом упражнении, а также объявил graphView.

Теперь проблема в том, что я хочу заполнить graphView во втором упражнении, но это ссылка, т.е. mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); присутствует в первом упражнении.

Так, как я могу перейти mySimpleXYPlot во втором упражнении?

, если я использую

 setContentView(R.layout.main);
 mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot);

во втором упражнении, весь макетперезапускается, чего я не хочу: (

ЛЮБАЯ ПОМОЩЬ БУДЕТ ПРИЗНАНА!

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

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

Редактировать ...

В Деятельности 1-й делай так

public class MyActivity1 extends Activity{
    public static XYPlot mySimpleXYPlot;

    public onCreated(Bundle b){
       setContentView(R.layout.main);
       mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
       // start you 2nd activity from button
    }
}

В Activity2 используйте этот способ

public class MyActivity2 extends Activity{
    private XYPlot mySimpleXYPlot;
    public onCreated(Bundle b){
       setContentView(R.layout.main); 
       mySimpleXYPlot = MyActivity2.mySimpleXYPlot;
       // use mySimpleXYPlot as per your requirement
    }
}

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

Edit2

не добавляйте свой компонент в файл макета xml, добавляйте в момент создания

мой файл макета выглядит так

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"   
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical"
   android:id="@+id/main_linear"
   >
  <Button android:id="@+id/btn1" android:text="Click" android:layout_width="wrap_content"
      android:layout_height="wrap_content" />
</LinearLayout>

мое первое занятие

    public static EditText edittext;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
    //edittext = (EditText) findViewById(R.id.edittext);
    final LinearLayout ll = (LinearLayout) findViewById(R.id.main_linear);

    edittext = new EditText(getApplicationContext());
    edittext.setId(1);
    edittext.setText("text change");
    ((Button)findViewById(R.id.btn1)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            edittext.setText(edittext.getText().toString());
            ll.removeView(edittext);
            startActivity(new Intent(TestLinear.this,TestClass.class));
        }
    });
    ll.addView(edittext);
}

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

    private static EditText edittext;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
    LinearLayout ll = (LinearLayout) findViewById(R.id.main_linear);
    getEdit();
    ((Button)findViewById(R.id.btn1)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.v("test", edittext.getText().toString());
        }
    });
    ll.addView(edittext);
}
static void  getEdit(){
    edittext = TestLinear.edittext;
}

Я знаю, что это не идеальный способ. Другой способ - вы можете сохранить его значение в пользовательском классе, таком как setter / getter и использовать в упражнении

0 голосов
/ 20 декабря 2011

Просто добавьте тот же XML во втором представлении содержимого.Если вам нужно использовать определенную часть макета более чем в одном представлении, поместите его в отдельный XML-файл и включите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...