인텐트를 사용하여 활동 간에 데이터 전달

활동 간에 데이터를 전달하려고 합니다.

인텐트를 사용하여 일반 활동 간에 데이터를 전달하려고 합니다.

아래 코드를 고려해 보세요:

AndroidTabRestaurantDescSearchListView.java

public class AndroidTabRestaurantDescSearchListView extends TabActivity {

    // TabSpec Names
    private static final String INBOX_SPEC = "Rating";
    private static final String OUTBOX_SPEC = "Price";

    Button Photos;
    Button Filter;
    Button Search;

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

        TabHost tabHost = getTabHost();

        // Inbox Tab
        TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
        Intent inboxIntent = new Intent(this, RatingDescriptionSearchActivity.class);
        inboxSpec.setIndicator(INBOX_SPEC);
        // Tab Content
        inboxSpec.setContent(inboxIntent);

        // Outbox Tab
        TabSpec PriceSpec = tabHost.newTabSpec(OUTBOX_SPEC);
        Intent PriceIntent = new Intent(this, PriceDescriptionSearchActivity.class);
        PriceSpec .setIndicator(OUTBOX_SPEC);
        PriceSpec.setContent(PriceIntent);

        // Adding all TabSpec to TabHost
        tabHost.addTab(inboxSpec); 
        tabHost.addTab(PriceSpec); 

        //Set the current value tab to default first tab
        tabHost.setCurrentTab(0);

    }

}

'Activity-1'이라는 다른 액티비티에서 데이터를 인텐트로 AndroidTabRestaurantDescSearchListView로 전송한다고 가정해 보겠습니다.

이제 Activity-1에서 가져온 AndroidTabRestaurantDescSearchListView의 데이터를 어떻게 수신한 다음 다시 RatingDescriptionSearchActivity로 전달할 수 있을까요?

그림은 : 입니다:

{EDIT} -- 답변에 따라 가능한 경우 --- 안드로이드탭레스토랑Desc검색리스트뷰는 탭 활동이므로 모호함

TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
        Intent inboxIntent = new Intent(this, RatingDescriptionActivity.class);
        intent.putExtra("keyName", value);
        inboxSpec.setIndicator(INBOX_SPEC);
        // Tab Content
        inboxSpec.setContent(inboxIntent);
질문에 대한 의견 (1)
해결책

Activity-1의 데이터를 아래와 같이AndroidTabRes..`에 전달합니다:

활동 전송 시...

Intent intent = new Intent(current.this, AndroidTabRestaurantDescSearchListView.class);
intent.putExtra("keyName","value");
startActivity(intent);

AndroidTabRes..` 활동에서...

  String data = getIntent().getExtras().getString("keyName");

따라서 보내는 활동에서 받는 활동에서 데이터를 가질 수 있습니다...

그리고 AndroidTabRestaurantDescSearchListView 클래스에서 이렇게 하세요:

String value= getIntent().getStringExtra("keyName");

Intent intent = new Intent(this, RatingDescriptionSearchActivity.class);
intent.putExtra("keyName", value);
startActivity(intent);

그런 다음 RatingDescriptionSearchActivity 클래스에서 이렇게 하세요:

 String data= getIntent().getStringExtra("keyName");
해설 (6)

안드로이드 탭 레스토랑 디스크로 검색 목록 보기` 활동에서 시도해 보세요.

Intent intent  = new Intent(this,RatingDescriptionSearchActivity.class );
intent.putExtras( getIntent().getExtras() );
startActivity( intent );  

그런 다음 RatingDescriptionSearchActivity 활동에서 다음을 호출하세요.

getIntent().getStringExtra("key")
해설 (2)

당신이 사용할 수 있는 번들 데이터를 얻을:

Bundle extras = intent.getExtras();
String data = extras.getString("data"); // use your key 

그리고 다시할 수 있습 opass 이 데이터를 다음의 활동:

 Intent intent = new Intent(this, next_Activity.class);
   intent.putExtra("data", data);
   startActivity(intent);
해설 (4)

간단합니다.

'활동 1'에서 이 작업을 수행했다고 가정합니다:

String stringExtra = "Some string you want to pass";

Intent intent = new Intent(this, AndroidTabRestaurantDescSearchListView.class);

//include the string in your intent
intent.putExtra("string", stringExtra);

startActivity(intent);

그리고 AndroidTabRestaurantDescSearchListView 클래스에서 이렇게 하세요:

//fetch the string  from the intent
String extraFromAct1 = getIntent().getStringExtra("string");

Intent intent = new Intent(this, RatingDescriptionSearchActivity.class);

//attach same string and send it with the intent
intent.putExtra("string", extraFromAct1);
startActivity(intent);

그런 다음 RatingDescriptionSearchActivity 클래스에서 다음과 같이 하세요:

String extraFromAct1 = getIntent().getStringExtra("string");
해설 (0)

주요 활동

public class MainActivity extends Activity {

    EditText user, password;
    Button login;

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

        user = (EditText) findViewById(R.id.username_edit);
        password = (EditText) findViewById(R.id.edit_password);
        login = (Button) findViewById(R.id.btnSubmit);
        login.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,Second.class);

                String uservalue = user.getText().toString();
                String name_value = password.getText().toString();
                String password_value = password.getText().toString();

                intent.putExtra("username", uservalue);
                intent.putExtra("password", password_value);
                startActivity(intent);
            }
        });
    }
}

두 번째 활동을서를 받기 원하는 데이터

public class Second extends Activity{

    EditText name, pass;
    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);

        name = (EditText) findViewById(R.id.editText1);
        pass = (EditText) findViewById(R.id.editText2);

        String value = getIntent().getStringExtra("username");
        String pass_val = getIntent().getStringExtra("password");
        name.setText(value);
        pass.setText(pass_val);
    }
}
해설 (0)

에 FirstActivity:

Intent sendDataToSecondActivity = new Intent(FirstActivity.this, SecondActivity.class);
sendDataToSecondActivity.putExtra("USERNAME",userNameEditText.getText().toString());
sendDataToSecondActivity.putExtra("PASSWORD",passwordEditText.getText().toString());
startActivity(sendDataToSecondActivity);

에 SecondActivity

에서onCreate()

String userName = getIntent().getStringExtra("USERNAME");
String passWord = getIntent().getStringExtra("PASSWORD");
해설 (0)

나는 다음과 같이 깨끗한 코드를 중 하나를 통과하는 값만:

startActivity(new Intent(context, YourActivity.class).putExtra("key","value"));

이 더 간단하게 작성하고 이해할 수 있는 코드입니다.

해설 (0)