如何从OnActivityResult

时间:2016-06-04 17:13:42

标签: android android-intent android-activity

我使NAME和EMAIL等于第一个活动中其他活动的数据。我正在使用NAME和EMAIL在onActivityResult中进行吐司,它显示了结果,但是除了这个方法之外它不起作用我使NAME和EMAIL成为一个全局变量。

public class startActivity extends ActionBarActivity {


       String sell="sell";
    Toolbar mToolbar;
    //////drawable navbar
    LinearLayout mystore;
    int  REQUEST_CODE=10110;
    private static ViewPager mPager;
    private static int currentPage = 0;
    private static int NUM_PAGES = 0;
    LinearLayout buysell;



     int PROFILE = R.drawable.sellit;

    private Toolbar toolbar;  
                            // Declaring the    Toolbar Object

      RecyclerView mRecyclerView;                           // Declaring 
      RecyclerView.Adapter mAdapter;                        // Declaring Adapter 
      RecyclerView.LayoutManager mLayoutManager;            // Declaring Layout 
      DrawerLayout Drawer;                                  // Declaring 

    ActionBarDrawerToggle mDrawerToggle;
    /////
      String name,mail;
    String NAME;
    String EMAIL;
       protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);


      mystore=(LinearLayout)findViewById(R.id.mystore);
        mystore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(startActivity.this,MybookStore.class));
            }
        });
        //toolbar
      init();

        buysell=(LinearLayout)findViewById(R.id.buysell);
        buysell.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(startActivity.this,buySecond.class));
            }
        });

        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        getSupportActionBar().setTitle("MybookStore");




        mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerView); 

        mRecyclerView.setHasFixedSize(true); 

        mAdapter = new MyAdapter(TITLES,ICONS,NAME,EMAIL,PROFILE);   

        // And passing the titles,icons,header view name, header view email,
        // and header view profile picture

        mRecyclerView.setAdapter(mAdapter);    
                           // Setting the adapter to RecyclerView
        //RecyclerItemClickListener//
                mLayoutManager = new LinearLayoutManager(this);   
                // Creating a layout Manager

        mRecyclerView.setLayoutManager(mLayoutManager);  
               // Setting the layout Manager

        mRecyclerView.addOnItemTouchListener(
                new RecyclerItemClickListener(startActivity.this, new 
     RecyclerItemClickListener.OnItemClickListener() {
                    @Override public void onItemClick(View view, int position) {
                        switch(position){
                            case 1:
                                startActivity(new    
      Intent(startActivity.this,publishNewBook.class));
                        }
                    }
                })
        );


        Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout);  
      // Drawer object Assigned to the view
        mDrawerToggle = new
         ActionBar
       DrawerToggle(this,Drawer,toolbar,R.string.drawer_open,R.string.drawer_c
      lose){

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                // code here will execute once the drawer is opened( As I dont 
        want anything happened whe drawer is
                // open I am not going to put anything here)
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                // Code here will execute once drawer is closed
            }



        }; // Drawer Toggle Object Made
        Drawer.setDrawerListener(mDrawerToggle); // Drawer Listener set to the
      Drawer toggle
                     // Finally we set the drawer toggle sync State
        mDrawerToggle.syncState();


    }




    public void login(View view){
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setMessage("Please Login To Publish Book ");
    builder.setCancelable(false);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            Intent i=new Intent(startActivity.this, userLogin.class);
            startActivityForResult(i,REQUEST_CODE);
          //  startActivity(new Intent(startActivity.this, userLogin.class));
        }
    });
    builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
     AlertDialog alertDialog=builder.create();
    alertDialog.show();

     //startActivity(new Intent(startActivity.this,userLogin.class));

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent 
    data) {
        super.onActivityResult(requestCode, resultCode, data);

     if(requestCode==REQUEST_CODE){
        if (resultCode ==110) {
            NAME=new String(data.getStringExtra("name1"));
            EMAIL=new String(data.getStringExtra("mail2"));
            Toast.makeText(getApplicationContext(), "Name " + NAME+" and mailId
      "+EMAIL+" get", Toast.LENGTH_LONG).show();

            //  mAdapter = new MyAdapter(TITLES,ICONS,NAME1,EMAIL1,PROFILE);

        }
   }
}

2 个答案:

答案 0 :(得分:4)

这样做

   //make a function updateAdapter() inside your adapter
   public void updateAdapter(/* gets params like TITLES,ICONS,NAME,EMAIL,PROFILE*/){

            // update adapter element like NAME, EMAIL e.t.c. here

            // then in order to refresh the views notify the RecyclerView
            notifyDataSetChanged();
   }

然后像这样修改OnActivityResult方法

   protected void onActivityResult(int requestCode, int resultCode, Intent 
   data) {
           super.onActivityResult(requestCode, resultCode, data); 

           if(requestCode==REQUEST_CODE){ 
              if (resultCode == RESULT_OK) { 
                NAME=new String(data.getStringExtra("name1")); 
                EMAIL=new String(data.getStringExtra("mail2")); 
                Toast.makeText(getApplicationContext(), "Name " + NAME+" and mailId 
                "+EMAIL+" get", Toast.LENGTH_LONG).show(); 

                //do this
                mAdapter.updateAdapter(TITLES,ICONS,NAME,EMAIL,PROFILE);

    } 
 } 

答案 1 :(得分:0)

您正在寻找的东西是在活动之间传递数据。 首先你应该使用片段而不是活动,如果你仍然愿意使用活动,那么它在这里被回答

How to send string from one activity to another?