android tutorial come chiamare un metodo in un'altra attività da Attività




android onnewintent (4)

Sto sviluppando un'applicazione Android in cui ho

Ho due classi di classe A e di classe B.

In classe A, ho provato il codice Snippet come sotto,

come chiamare un metodo in un'altra attività da Attività.

public class FirstActivity extends Activity {  

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
    }      

    public void method() {
        // some code
    }  
}

public class SecondActivity extends Activity {  

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         setContentView(R.layout.main2);

        FirstActivity fact = new FIrstActivity();

        fact.method();
    }
}

Dichiarare una variabile SecondActivity in FirstActivity

Come questo

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

  }  
}  

Usando questo formato puoi chiamare qualsiasi metodo da un'attività all'altra.


Non dovresti creare un'istanza della classe di attività. È sbagliato. L'attività ha l'interfaccia utente e il ciclo di vita e l'attività viene avviata da startActivity(intent)

È possibile utilizzare startActivityForResult oppure è possibile passare i valori da un'attività a un'altra utilizzando gli intent e fare ciò che è richiesto. Ma dipende da cosa intendi fare nel metodo.


Il pattern startActivityForResult è molto più adatto per ciò che stai cercando di ottenere: http://developer.android.com/reference/android/app/Activity.html#StartingActivities

Prova sotto il codice

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  
                }  
            });  
    }  

}  

Fammi sapere se ha aiutato ...


Se è necessario chiamare lo stesso metodo da entrambe le attività, perché non utilizzare un terzo oggetto?

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();

    }
}

Naturalmente renderlo statico dipende dal caso d'uso.





android-activity