Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何在MainActivity中使用java更改片段TextView_Java_Android_Fragment - Fatal编程技术网

Android如何在MainActivity中使用java更改片段TextView

Android如何在MainActivity中使用java更改片段TextView,java,android,fragment,Java,Android,Fragment,我使用java在activity_main.xml中插入一个片段,我将片段放在activity_main的线性布局中。 片段xml文件有一个textView 当应用程序使用java从MainActivity启动时、当应用程序启动时以及当它调用onCreate时,如何更改TextView? 我尝试了一些解决方案,但我可以让它工作。 Emulator在开始加载应用程序时崩溃 以下是activity_main.xml代码: <?xml version="1.0" encoding="utf-8"

我使用java在activity_main.xml中插入一个片段,我将片段放在activity_main的线性布局中。 片段xml文件有一个textView

当应用程序使用java从MainActivity启动时、当应用程序启动时以及当它调用onCreate时,如何更改TextView? 我尝试了一些解决方案,但我可以让它工作。 Emulator在开始加载应用程序时崩溃

以下是activity_main.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.android.fragment_promjenaviewprekojave.MainActivity">


    <LinearLayout
        android:id="@+id/linearLayoutFragment_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    </LinearLayout>
</LinearLayout>
这是只包含1个TextView的片段的xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.fragment_promjenaviewprekojave.BlankFragment">

<TextView
    android:id="@+id/fragmentTextView_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

BlankFragment
代码中,更改

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_blank, container, false);
}
致:

现在回到你的活动中,你可以打电话

objA.setCustomText("Hello World!");
请记住,您需要在活动中存储对
objA
的引用,例如

private BlankFragment  objA;
然后,
onCreate
将是:

objA = new BlankFragment();
最后,一旦视图全部就位并绘制完毕,此方法就可以正常工作。 如果希望在创建时更改片段内的文本,则需要在片段上使用
newInstance
模式,在该模式中可以将文本作为参数传递

大概是这样的:

objA = BlankFragment.newInstance("Hello world");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_blank, container, false);
    myTextView = (TextView) v.findViewById(R.id.fragmentTextView_id);
    String text = getArguments().getString("TextTag", "");
    myTextView .setText(text);
    return (v);
}
其中,
newInstance
在片段中定义如下:

public static BlankFragment newInstance(String str) {
    BlankFragment f = new BlankFragment();
    Bundle args = new Bundle();
    args.putString("TextTag", str);
    f.setArguments(args);
    return (f);
}
然后您可以在片段的
onCreate
中检索该值,如下所示:

objA = BlankFragment.newInstance("Hello world");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_blank, container, false);
    myTextView = (TextView) v.findViewById(R.id.fragmentTextView_id);
    String text = getArguments().getString("TextTag", "");
    myTextView .setText(text);
    return (v);
}

BlankFragment
代码中,更改

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_blank, container, false);
}
致:

现在回到你的活动中,你可以打电话

objA.setCustomText("Hello World!");
请记住,您需要在活动中存储对
objA
的引用,例如

private BlankFragment  objA;
然后,
onCreate
将是:

objA = new BlankFragment();
最后,一旦视图全部就位并绘制完毕,此方法就可以正常工作。 如果希望在创建时更改片段内的文本,则需要在片段上使用
newInstance
模式,在该模式中可以将文本作为参数传递

大概是这样的:

objA = BlankFragment.newInstance("Hello world");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_blank, container, false);
    myTextView = (TextView) v.findViewById(R.id.fragmentTextView_id);
    String text = getArguments().getString("TextTag", "");
    myTextView .setText(text);
    return (v);
}
其中,
newInstance
在片段中定义如下:

public static BlankFragment newInstance(String str) {
    BlankFragment f = new BlankFragment();
    Bundle args = new Bundle();
    args.putString("TextTag", str);
    f.setArguments(args);
    return (f);
}
然后您可以在片段的
onCreate
中检索该值,如下所示:

objA = BlankFragment.newInstance("Hello world");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_blank, container, false);
    myTextView = (TextView) v.findViewById(R.id.fragmentTextView_id);
    String text = getArguments().getString("TextTag", "");
    myTextView .setText(text);
    return (v);
}

在xml中,应该有一个片段容器。假设此文件的ID为
片段\u ID

对于支持库

BlankFragment blankFrag = (BlankFragment)getSupportFragmentManager().
                                              findFragmentById(R.id.fragment_id);
或者对于非支持库
片段

BlankFragment blankFrag = (BlankFragment)getFragmentManager().
                                             findFragmentById(R.id.fragment_id); 

您还需要在
BlankFragment
类中使用一个带有签名的公共方法,如
setTextViewText(String text)
,然后从
MainActivity
调用它,如
blankFrag.setTextViewText(“我的文本”)

在xml中,应该有一个片段容器。假设此文件的ID为
片段\u ID

对于支持库

BlankFragment blankFrag = (BlankFragment)getSupportFragmentManager().
                                              findFragmentById(R.id.fragment_id);
或者对于非支持库
片段

BlankFragment blankFrag = (BlankFragment)getFragmentManager().
                                             findFragmentById(R.id.fragment_id); 

您还需要在
BlankFragment
类中使用一个带有签名的公共方法,如
setTextViewText(String text)
,然后从
MainActivity
调用它,如
blankFrag.setTextViewText(“我的文本”)

它正在工作,但这是来自片段的更改。我可以从MainActivity.java更改它吗?它正在工作,但这是从fragment更改的。我可以从MainActivity.java更改它吗?