热改片段内父母的TextView的文本? [英] Hot to change the text of a parents TextView inside a fragment?

查看:172
本文介绍了热改片段内父母的TextView的文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的 Fragemt.java 有一些这样的:

 公共类MainFragment扩展片段实现View.OnClickListener {
    私人TextView的mTitleTextView;
    [...]无关code切出    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        查看rootView = inflater.inflate(R.layout.fragment_main,集装箱,FALSE);
        [...]其他一些code        mTitleTextView =(TextView中)rootView.findViewById(R.id.titleTextView);
        mTitleTextView.setText(TEXT我要设置); //问题!应用程序在启动时崩溃的TextView不是片段的一部分
        [...]更多不相干code

这是现在工作的罚款。之后,应用程序总是崩溃加载和我正在寻找好几个小时。问题是,的TextView(R.id.titleTextView)是位于 XML 父活动,而不是的XML分配给片段。

有没有我可以改变父母的文本的方式,从碎片的java code里面的的TextView

编辑
logcat的信息

  11月10日至31日:10:16.992 3259-3259 /? E / AndroidRuntime:致命异常:主要
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:工艺:com.example.sebastian.recyclerlist,PID:3259
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.sebastian.recyclerlist / com.example.sebastian.recyclerlist.MainActivity}:android.view.InflateException:二进制XML文件行#20:错误膨胀类片段
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.access $ 800(ActivityThread.java:151)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:102)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.os.Looper.loop(Looper.java:135)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5254)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在java.lang.reflect.Method.invoke(本机方法)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:372)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:android.view.InflateException:二进制XML文件行#20:错误充气类片段产生的原因
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:504)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:365)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:257)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.example.sebastian.recyclerlist.MainActivity.onCreate(MainActivity.java:38)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.Activity.performCreate(Activity.java:5990)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.access $ 800(ActivityThread.java:151)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:102)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.os.Looper.loop(Looper.java:135)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5254)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在java.lang.reflect.Method.invoke(本机方法)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:372)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:显示java.lang.NullPointerException:产生的原因尝试在空对象引用调用虚拟方法无效android.widget.TextView.setText(java.lang.CharSequence中的)'
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.example.sebastian.recyclerlist.MainActivity.setText(MainActivity.java:49)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.example.sebastian.recyclerlist.MainFragment.updateList(MainFragment.java:160)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.example.sebastian.recyclerlist.MainFragment.onCreateView(MainFragment.java:107)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1047)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1237)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1339)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2295)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:314)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:504)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:365)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:257)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.example.sebastian.recyclerlist.MainActivity.onCreate(MainActivity.java:38)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.Activity.performCreate(Activity.java:5990)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.access $ 800(ActivityThread.java:151)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:102)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.os.Looper.loop(Looper.java:135)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5254)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在java.lang.reflect.Method.invoke(本机方法)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:372)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)
10-31 11:10:16.992 3259-3259 /? E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)


解决方案

@ PPartisan的回答是不错的。不过,我宁愿亲手preFER在这种模式有点变化。

在我看来,这是更好地活动实现了接口而不是片段。换句话说,假设我们有多个片段往往会在某些时候要附加到这个活动。因此,让每个片段自己的接口似乎不那么好了。

我的解决方案


  • 定义一个Java接口打了个比方, IParentActivity

  • 让您的主要活动,以实现该接口。

  • 实现接口的必要方法,在你的活动类。

  • 每当一个片段希望与活动进行沟通。它应该做这样的事情:

      IParentActivity父=(IParentActivity)getActivity();
    parent.someMethod();


In my Fragemt.java there is something like this:

public class MainFragment extends Fragment implements View.OnClickListener {
    private TextView mTitleTextView;
    [...] irrelevant code cut out

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        [...] some other code

        mTitleTextView = (TextView) rootView.findViewById(R.id.titleTextView);
        mTitleTextView.setText("Text I Want to Set"); // Problem! App crashes on start if TextView isn't part of the fragment
        [...] more irrelevant code

And this is working fine now. After the App always crashed on loading and I was searching for hours. The problem was that the TextView (R.id.titleTextView) was located in the XML of the parent activity, not the xml assigned to the fragment.

Is there a way I could have changed the text of the parents TextView from inside the fragments java code?

EDIT logcat info

10-31 11:10:16.992 3259-3259/? E/AndroidRuntime: FATAL EXCEPTION: main
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime: Process: com.example.sebastian.recyclerlist, PID: 3259
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sebastian.recyclerlist/com.example.sebastian.recyclerlist.MainActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class fragment
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:  Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class fragment
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:257)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.example.sebastian.recyclerlist.MainActivity.onCreate(MainActivity.java:38)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5990)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.example.sebastian.recyclerlist.MainActivity.setText(MainActivity.java:49)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.example.sebastian.recyclerlist.MainFragment.updateList(MainFragment.java:160)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.example.sebastian.recyclerlist.MainFragment.onCreateView(MainFragment.java:107)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1047)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1237)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1339)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2295)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:314)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:257) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.example.sebastian.recyclerlist.MainActivity.onCreate(MainActivity.java:38) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5990) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
10-31 11:10:16.992 3259-3259/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

解决方案

@PPartisan's answer is good. However I would rather personally prefer a bit change in that pattern.

In my opinion, It's better to the Activity implements the interface not the fragment. In other words, suppose we have got multiple fragments tend to be attached to this activity at some point. Therefore, having each fragment its own interface doesn't seem so good.

My Solution

  • Declare a Java interface called for example, IParentActivity.
  • Get your main activity to implement this interface.
  • Implement necessary methods of the interface in your activity class.
  • Whenever a fragments wants to communicate with the activity. it should does something like this:

    IParentActivity parent = (IParentActivity) getActivity();
    parent.someMethod();
    

这篇关于热改片段内父母的TextView的文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆