how to call a method in another Activity from Activity

后端 未结 6 1821
广开言路
广开言路 2020-11-27 21:34

\'m developing an Android Application in which I have

I\'ve two classes class A and Class B .

In class A , I tried the code Snippets like below,

相关标签:
6条回答
  • 2020-11-27 21:59

    If you need to call the same method from both Activities why not then use a third object?

    public class FirstActivity extends Activity 
    {  
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main2);
    
        }      
    
        // Utility.method() used somewhere in FirstActivity
    }
    
    public class Utility {
    
        public static void method()
        {
    
        }  
    
    }
    
    public class SecondActivity extends Activity 
    {  
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main2);
    
            Utility.method();
    
        }
    }
    

    Of course making it static depends on the use case.

    0 讨论(0)
  • 2020-11-27 22:01
    public class ActivityB extends AppCompatActivity {
    
    static Context mContext;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
    
        try {
    
            Bundle bundle = getIntent().getExtras();
            if (bundle != null) {
                String texto = bundle.getString("message");
                if (texto != null) {
                  //code....
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void launch(String message) {
            Intent intent = new Intent(mContext, ActivityB.class);
            intent.putExtra("message", message);
            mContext.startActivity(intent);
        }
    }
    

    In ActivityA or Service.

    public class Service extends Service{
    
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {    
    
            String text = "Value to send";
            ActivityB.launch(text);
            Log.d(TAG, text);
        }
    }
    
    0 讨论(0)
  • 2020-11-27 22:07

    Declare a SecondActivity variable in FirstActivity

    Like this

    public class FirstActivity extends Activity {  
    
    SecondActivity secactivity;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
      }      
    
      public void method() {
        // some code
    
      secactivity.call_method();// 'Method' is Name of the any one method in SecondActivity
    
      }  
    }  
    

    Using this format you can call any method from one activity to another.

    0 讨论(0)
  • 2020-11-27 22:15

    The startActivityForResult pattern is much better suited for what you're trying to achieve : http://developer.android.com/reference/android/app/Activity.html#StartingActivities

    Try below code

    public class MainActivity extends Activity {  
    
        Button button1;  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            textView1=(TextView)findViewById(R.id.textView1);  
            button1=(Button)findViewById(R.id.button1);  
            button1.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View arg0) {  
                    Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
                    startActivityForResult(intent, 2);// Activity is started with requestCode 2  
                }  
            });  
        }  
     // Call Back method  to get the Message form other Activity  
        @Override  
           protected void onActivityResult(int requestCode, int resultCode, Intent data)  
           {  
                     super.onActivityResult(requestCode, resultCode, data);  
                      // check if the request code is same as what is passed  here it is 2  
                       if(requestCode==2)  
                             {  
                              //do the things u wanted 
                             }  
         }  
    
    } 
    

    SecondActivity.class

    public class SecondActivity extends Activity {  
    
        Button button1;  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_second);  
    
                button1=(Button)findViewById(R.id.button1);  
                button1.setOnClickListener(new OnClickListener() {  
                    @Override  
                    public void onClick(View arg0) {  
                        String message="hello ";  
                        Intent intent=new Intent();  
                        intent.putExtra("MESSAGE",message);  
                        setResult(2,intent);  
                        finish();//finishing activity  
                    }  
                });  
        }  
    
    }  
    

    Let me know if it helped...

    0 讨论(0)
  • 2020-11-27 22:15

    Simple, use static.

    In activity you have the method you want to call:

    private static String name = "Robert";
    
    ...
    
    public static String getData() {
        return name;
    }
    

    And in your activity where you make the call:

    private static String name;
    
    ...
    
    name = SplashActivity.getData();
    
    0 讨论(0)
  • 2020-11-27 22:16

    You should not create an instance of the activity class. It is wrong. Activity has ui and lifecycle and activity is started by startActivity(intent)

    You can use startActivityForResult or you can pass the values from one activity to another using intents and do what is required. But it depends on what you intend to do in the method.

    0 讨论(0)
提交回复
热议问题