需要关于如何设置文本里面片段一个TextView更多的澄清 [英] Need more clarification on how to set text to a TextView inside Fragment

查看:138
本文介绍了需要关于如何设置文本里面片段一个TextView更多的澄清的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有荫在这个问题上同样的问题。

更改TextView的片段里面

和写有工作正常,这里的解决方案是解决方案

 进口android.os.Bundle;
    进口android.support.v4.app.Fragment;
    进口android.view.LayoutInflater;
    进口android.view.View;
    进口android.view.ViewGroup;
    进口android.widget.TextView;    公共类DetailFragment扩展片段{        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
            查看查看= inflater.inflate(R.layout.details,集装箱,FALSE);
            返回视图。
        }
        公共无效的setText(字符串文本){
            TextView中的TextView =(TextView中)getView()findViewById(R.id.detailsText)。
            textView.setText(文本);
        }    }

我的第一个问题 - > 为什么我的应用程序崩溃每当我尝试设置文本在位于片段里面这种方式的TextView

内部类主活动的方法

  TextView的电视=(TextView中)getView()findViewById(R.id.textView_question)。
   tv.setText(问题);

第二个问题 - >在方法解决方案的setText为什么不能在我写这篇

 的TextView的TextView =(TextView中)getView()findViewById(R.id.detailsText)。
            textView.setText(文本);

 的TextView的TextView =(的TextView)findViewById(R.id.detailsText);
            textView.setText(文本);

登录猫当我尝试设置文本(仅错误)

  18 07-08:40:33.462:E / AndroidRuntime(27881):致命异常:主要
07-08 18:40:33.462:E / AndroidRuntime(27881):java.lang.IllegalStateException:无法执行活动的方法
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.view.View $ 1.onClick(View.java:3071)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.view.View.performClick(View.java:3538)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.view.View $ PerformClick.run(View.java:14330)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.os.Handler.handleCallback(Handler.java:608)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.os.Handler.dispatchMessage(Handler.java:92)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.os.Looper.loop(Looper.java:156)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.app.ActivityThread.main(ActivityThread.java:4987)
07-08 18:40:33.462:E / AndroidRuntime(27881):在java.lang.reflect.Method.invokeNative(本机方法)
07-08 18:40:33.462:E / AndroidRuntime(27881):在java.lang.reflect.Method.invoke(Method.java:511)
07-08 18:40:33.462:E / AndroidRuntime(27881):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
07-08 18:40:33.462:E / AndroidRuntime(27881):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-08 18:40:33.462:E / AndroidRuntime(27881):在dalvik.system.NativeStart.main(本机方法)
07-08 18:40:33.462:E / AndroidRuntime(27881):由:java.lang.reflect.InvocationTargetException
07-08 18:40:33.462:E / AndroidRuntime(27881):在java.lang.reflect.Method.invokeNative(本机方法)
07-08 18:40:33.462:E / AndroidRuntime(27881):在java.lang.reflect.Method.invoke(Method.java:511)
07-08 18:40:33.462:E / AndroidRuntime(27881):在android.view.View $ 1.onClick(View.java:3066)
07-08 18:40:33.462:E / AndroidRuntime(27881):... 11个
07-08 18:40:33.462:E / AndroidRuntime(27881):致:显示java.lang.NullPointerException
07-08 18:40:33.462:E / AndroidRuntime(27881):在com.alisaeed.newramadan.MainActivity.question_displayer(MainActivity.java:64)
07-08 18:40:33.462:E / AndroidRuntime(27881):... 14个

新的code

 公共无效question_displayer(视图v){
    Log.i(创造,question_displayer());
    RamadanData data_object =新RamadanData();
    FragmentTransaction fragment_question = getSupportFragmentManager()调用BeginTransaction()。
    fragment_question.replace(R.id.framelayout1,新fragment_question_displayer(),NULL);
    fragment_question.addToBackStack(NULL);
    fragment_question.commit();     TextView的电视=(的TextView)findViewById(R.id.textView_question);    开关(v.getId()){
    案例(R.id.buttonPrayer):
    {
        Log.i(创造,祈祷());        如果(child_selected ==真&放大器;&安培; adult_selected ==假放;&安培; teen_selected ==假)
        {
            Log.i(创造,child_selected);           字符串的问题= data_object.question_output(flag_autoquestion,子,祈祷);
           Log.i(创造,问题);           tv.setText(问题);           flag_autoquestion ++;
                                         }
    }}
}


解决方案

在片段,你会叫这样的文本视图

  @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
        查看查看= inflater.inflate(R.layout.details,集装箱,FALSE);
        TextView中的TextView =(TextView中)view.findViewById(R.id.detailsText);
        字符串文本=示范文本;
        textView.setText(文本);
        返回视图。
    }

要设置的文字。在另一方面,在活动课就会像这样

 的setContentView(R.activity_layout);
TextView的电视=(的TextView)findViewById(R.id.textView_question);
tv.setText(问题);

Iam having the same problem as in this question

Change TextView inside Fragment

and the solution written there works fine Here is the solution

  import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;

    public class DetailFragment extends Fragment {

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.details, container, false);
            return view;
        }


        public void setText(String text){
            TextView textView = (TextView) getView().findViewById(R.id.detailsText);
            textView.setText(text);
        }

    }

My first Question -> WHY My application crashes whenever i try to set text in the TextView which is located inside a fragment in this way

Inside a method of class Main-Activity

TextView  tv = (TextView)getView().findViewById(R.id.textView_question); 
   tv.setText(question);

Second Question -> in the solution in method setText why cant i write this

TextView textView = (TextView) getView().findViewById(R.id.detailsText);
            textView.setText(text);

To

   TextView textView = (TextView)findViewById(R.id.detailsText);
            textView.setText(text);

Log Cat when i try to set text (Only Error)

  07-08 18:40:33.462: E/AndroidRuntime(27881): FATAL EXCEPTION: main
07-08 18:40:33.462: E/AndroidRuntime(27881): java.lang.IllegalStateException: Could not execute method of the activity
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.view.View$1.onClick(View.java:3071)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.view.View.performClick(View.java:3538)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.view.View$PerformClick.run(View.java:14330)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.os.Handler.handleCallback(Handler.java:608)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.os.Looper.loop(Looper.java:156)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.app.ActivityThread.main(ActivityThread.java:4987)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at java.lang.reflect.Method.invokeNative(Native Method)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at java.lang.reflect.Method.invoke(Method.java:511)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at dalvik.system.NativeStart.main(Native Method)
07-08 18:40:33.462: E/AndroidRuntime(27881): Caused by: java.lang.reflect.InvocationTargetException
07-08 18:40:33.462: E/AndroidRuntime(27881):    at java.lang.reflect.Method.invokeNative(Native Method)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at java.lang.reflect.Method.invoke(Method.java:511)
07-08 18:40:33.462: E/AndroidRuntime(27881):    at android.view.View$1.onClick(View.java:3066)
07-08 18:40:33.462: E/AndroidRuntime(27881):    ... 11 more
07-08 18:40:33.462: E/AndroidRuntime(27881): Caused by: java.lang.NullPointerException
07-08 18:40:33.462: E/AndroidRuntime(27881):    at com.alisaeed.newramadan.MainActivity.question_displayer(MainActivity.java:64)
07-08 18:40:33.462: E/AndroidRuntime(27881):    ... 14 more

New code

public void  question_displayer(View v){


    Log.i("create","question_displayer()");
    RamadanData data_object = new RamadanData();


    FragmentTransaction fragment_question = getSupportFragmentManager().beginTransaction();
    fragment_question.replace(R.id.framelayout1, new fragment_question_displayer()  , null);
    fragment_question.addToBackStack(null);
    fragment_question.commit();

     TextView tv = (TextView)findViewById(R.id.textView_question);



    switch(v.getId()){
    case (R.id.buttonPrayer):
    {


        Log.i("create","prayer()");

        if(child_selected == true && adult_selected==false && teen_selected==false )
        {
            Log.i("create","child_selected");

           String question= data_object.question_output(flag_autoquestion, "child","prayer");      
           Log.i("create",question);

           tv.setText(question);

           flag_autoquestion++;
                                         }       




    }



}


}

解决方案

In fragment you will call a text view like this

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.details, container, false);
        TextView textView = (TextView) view.findViewById(R.id.detailsText);
        String text = "sample text";
        textView.setText(text);
        return view;
    }

to set your text. On the other hand, in activity class it will be like this

setContentView(R.activity_layout);
TextView  tv = (TextView) findViewById(R.id.textView_question); 
tv.setText(question);

这篇关于需要关于如何设置文本里面片段一个TextView更多的澄清的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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