【问题标题】:How to change TextView in fragment in on create or when a button is called如何在创建或调用按钮时更改片段中的 TextView
【发布时间】:2017-02-12 21:14:11
【问题描述】:

我花了将近 10 个小时来寻找答案。为什么我的应用在启动时崩溃。

我真正想要的是一个功能,当我在 Edittext 上单击 OK 时,文本将被写入 Text 视图。但首先要在类中创建该扩展片段时设置文本。

package youtube.demo.youtubedemo.Fragments.Calculator_list;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import youtube.demo.youtubedemo.R;
public class Calculator_list extends Fragment  {
View view;
    FragmentManager fragmentManager;

public Calculator_list() {
}
TextView Damage1pise;
    EditText Damage1beri;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.fragment_calculator_list, container, false);
     Damage1beri = (EditText) view.findViewById(R.id.Game1_read_dmg_list_Player1);
        Damage1pise = (TextView)view.findViewById(R.id.Game1_writen_dmg_list_Player1);
        Damage1pise.setText("123");
        return view;
    }
    public TextView Returnelement ()
    {
        return  Damage1pise;
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {

        Damage1pise = (TextView)getView().findViewById(R.id.Game1_writen_dmg_list_Player1);
        Damage1pise.setText("1234");

        super.onCreate(savedInstanceState);
    }
}

我真正想要的是一个功能,当我在 Edittext 上单击 OK 时,文本将被写入 Text 视图

public void OnButton1click(View v)
{
  Damage1.settext(v.text)    

 // This is hard coded, First I want to set text on create then go on whit the code



}

这里是错误。 E/AndroidRuntime:致命异常:主要 进程:youtube.demo.youtubedemo,PID:2736 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.view.View android.view.View.findViewById(int)' 在 youtube.demo.youtubedemo.Fragments.Calculator_list.Calculator_list.onCreate(Calculator_list.java:47) 在 android.app.Fragment.performCreate(Fragment.java:2335) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:949) 在 android.app.BackStackRecord.setLastIn(BackStackRecord.java:857) 在 android.app.BackStackRecord.calculateFragments(BackStackRecord.java:897) 在 android.app.BackStackRecord.run(BackStackRecord.java:727) 在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1578) 在 android.app.FragmentManagerImpl$1.run(FragmentManager.java:483) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6077) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

【问题讨论】:

  • 请为我们显示 logcat 错误。
  • 当我打开片段时它崩溃了,这里的某个地方。 @Override public void onCreate(Bundle savedInstanceState) { Damage1pise = (TextView)getView().findViewById(R.id.Game1_writen_dmg_list_Player1); Damage1pise.setText("1234"); super.onCreate(savedInstanceState); } 错误

标签: onclick textview fragment settext textedit


【解决方案1】:

在您显示的代码的这一行中,这两种方法都证明您在(TextView) 和句子末尾之间有一个空格,如下所示:

Damage1pise = (TextView) getView().findViewById(R.id.Game1_writen_dmg_list_Player1);

另外,请证明您在调用的布局文件 xml 上有一个名为 Game1_writen_dmg_list_Player1 的文本视图,因为错误是由空引用引发的,即:您重新调用未找到的元素(可能 编写 有两个 t?)。

【讨论】:

  • @Jaka Basej 对不起,我可以帮忙吗?谢谢。
  • @Jaka Basej,你找到问题了吗?是我分析后指给你的那个东西?如果是这样,请承认我为您的利益所做的努力。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2020-01-23
相关资源
最近更新 更多