2014-02-06 63 views
0

我想打電話給另一個班的sendPicture()。但它似乎不能使sendPicture()一個靜態類型,因爲它有startActivity()在裏面。我想知道如果有可能從另一個類中調用它,怎麼樣?如何從另一個類中調用startActivity(Intent)方法?

sendPicture()代碼:

public static void sendPicture() 
{ 

    File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath()); 
    Intent sendIntent = new Intent(Intent.ACTION_SEND); 
    sendIntent.putExtra("address", "number"); 
    sendIntent.putExtra("sms_body", "See attached picture"); 
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f)); 
    sendIntent.setType("image/jpg"); 
    startActivity(sendIntent); 
} 

回答

1

startActivity()是背景信息的方法,所以你需要具有對上下文的引用。您可以嘗試getApplicationContext()。startActivity(sendIntent),或將Context傳遞給靜態方法並使用該引用。

+0

@DavidCAdms 感謝您的回答。但是我仍然不知道如何去做。你有什麼參考資料可以幫我解決嗎? – michelle13

+0

首先,您應該瞭解活動的工作原理以及上下文是什麼。沒有這些,你將會在Android Framework中迷失方向。從這裏開始:http://stackoverflow.com/questions/3572463/what-is-context-in-android –

+0

如果我的方法不是靜態的呢?我怎麼能從另一個活動調用sendPicture()方法? – michelle13

0

我不知道它是否是正確與否,給它一個try.Suppose你在class1的有這個所謂的「sendpicture()」所謂的功能和U想把它調用Class2中。然後在class2中編寫下面的代碼並嘗試。

Class1 cls1= new Class1(); 
cls1.sendpicture(); 
+0

非常糟糕的形式來調用一個實例的靜態方法。另外,由於該方法是靜態的,因此他將調用startActivity()時發生錯誤。 –

+0

@DavidCAdams:如果我們在Class2中導入Class1,如下所示:「import package_name.Class1;」 。那我們可以直接調用靜態函數了嗎?順便說一句,我不是來爭辯我只是一個初學者。只是表達了我的想法就是這樣。 –

相關問題