我的項目的情況如下:類如何在課堂中稱呼吐司?根據在課堂上一定條件下表現出吐司</p> <p>的問題:我不能調用從類上下文
問題 - 活動 - 片段getActivity()
如何以最佳方式解決它?創建一些公共類或變量?
我的項目的情況如下:類如何在課堂中稱呼吐司?根據在課堂上一定條件下表現出吐司</p> <p>的問題:我不能調用從類上下文
問題 - 活動 - 片段getActivity()
如何以最佳方式解決它?創建一些公共類或變量?
只需將Context
發送給您的類構造函數。 像這樣:
private Context context;
public MyClass(Context ctx) {
context = ctx;
}
,然後用它來顯示敬酒。
你可以叫土司Activity類如下 -
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
要在片段或其他類顯示,你必須通過在片段的構造函數或特定類別的活動或上下文的參考。例如,
Fragment fragment = new Fragment(activity);
在片段類 -
Class MyFragment extends Fragment{
private Activity mActivity;
MyFragment(Activity activity){
mActivity = activity;
}
void showToast(){
Toast.makeText(mActivity, text, duration);
}
}
無覆蓋UT很多情況下,我可以推薦從不是Activity
其他類觸發Toast
消息的唯一方法是使用Listener
接口:
public class Unknown {
public interface UnknownListener {
void displayMessage(CharSequence message);
}
private UnknownListener mUnknownListener;
private final String mToastMessage = "Unknown message";
public Unknown() {}
public void setUnknownListener(UnknownListener listener) {
mUnknownListener = listener;
}
private void doSomething() {
if(mUnknownListener != null) {
mUnknownListener.displayMessage(mToastMessage);
}
}
}
然後實現該接口在Activity
,確保去除參考相應的生命週期方法:
public class MainActivity extends AppCompatActivity implements Unknown.UnknownListener {
private Unknown mUnknown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUnknown = new Unknown();
mUnknown.setUnknownListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mUnknown.setUnknownListener(null);
}
@Override
public void displayMessage(CharSequence message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
感謝您的回覆。也許這是最合適的解決方案,但我更願意以最簡單的方式調用構造函數。不過,謝謝。 – tadvas
您的問題非常模糊,我建議您研究如何創建[mcve]。 – Bryan
我需要從類(TextWatcher)調用Toast - 這不是一個模糊的問題 – tadvas
您是否閱讀過鏈接?我認爲你應該閱讀[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)。您沒有提供任何有關如何解決您的問題的信息,您也沒有提供任何代碼來幫助我們重現問題。它*是一個模糊的問題,提供更多信息將幫助我們爲您提供幫助。 – Bryan