10

如何TextView从 Activity A中更新DialogFragment

就我而言,单击中的关闭按钮后DialogFragment,我需要调用可以更改的方法TextView

这是来自的方法Activity

public void setCountText(String text){
    CountItem = (TextView) findViewById(R.id.tv_numOfItem);
    CountItem.setText(text);
}

中的 Onclick 按钮DialogFragment

View.OnClickListener closeHandler = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub


        new menufeedActivity().setQountText(getCount);


        InfoOrderDialog.this.dismiss();

    };

};

有谁知道如何解决这个问题?

04-29 03:08:17.513: E/AndroidRuntime(1738): FATAL EXCEPTION: main
04-29 03:08:17.513: E/AndroidRuntime(1738): java.lang.NullPointerException
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.app.Activity.findViewById(Activity.java:1744)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at com.example.android.rssfeed.menufeedActivity.setQountText(menufeedActivity.java:169)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at com.example.android.rssfeed.InfoOrderDialog$2.onClick(InfoOrderDialog.java:110)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.view.View.performClick(View.java:3110)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.view.View$PerformClick.run(View.java:11928)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.os.Handler.handleCallback(Handler.java:587)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.os.Looper.loop(Looper.java:132)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at android.app.ActivityThread.main(ActivityThread.java:4025)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at java.lang.reflect.Method.invokeNative(Native Method)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at java.lang.reflect.Method.invoke(Method.java:491)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-29 03:08:17.513: E/AndroidRuntime(1738):     at dalvik.system.NativeStart.main(Native Method)
4

4 回答 4

18

你可以这样称呼它:

代替:

 new menufeedActivity().setQountText(getCount);

和:

((menufeedActivity) getActivity()).setCountText(getCount);
于 2013-04-28T20:58:46.507 回答
12

就这样做吧。

TextView textview = (TextView)getActivity().findViewById(R.id.yourtextview);
textview.setText("text");
于 2013-08-22T21:51:22.153 回答
3

在科特林

val textview = activity!!.findViewById<View>(R.id.textView) as TextView
        textview.text = "your_text"
于 2019-12-21T16:12:14.103 回答
0

在您的片段中:调用 getActivity().startActivityForResult - 在您完成之前调用方法并将其捕获到您的活动中,该活动包含以下片段:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

//your method to update textview
setCountText();

}

编辑:我为您找到了更好的解决方案。检查这个:https ://stackoverflow.com/a/15121529/2245646

于 2013-04-28T20:23:06.633 回答