当前位置: 首页 > 知识库问答 >
问题:

如何从片段活动调用MainActive变量

沃弘图
2023-03-14

我刚接触Android,有一个带有片段的选项卡布局,我有一个编辑文本字段,它是在我的父活动中声明的,我想检查编辑文本字段是否为空,是否来自片段。我该怎么做呢?这是我做的,但它显示了错误。这是我的主要活动编辑文本字段:

search_edit_text = (FloatingEditText)findViewById(R.id.edt_missile_number);
        search_edit_text.setInputType(InputType.TYPE_CLASS_NUMBER);
        search_edit_text.setGravity(Gravity.CENTER);
        search_edit_text.setCursorVisible(false);
        search_edit_text.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                search_edit_text.setCursorVisible(true);

            }
        });

这是我的片段活动:

public class Manual_AC_Fuse_ckt extends Fragment {


    static Manual manual_child;    //MANUAL----->PARENT CLASS NAME


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



         Root_view = inflater.inflate(R.layout.manualmode_ac_fuse_ckt, null);
         manual_child = new Manual();
        (CheckBox)Root_view.findViewById(check_box_count_fuse_after_cnc[i]);

        registerForContextMenu(table_fuse_afer_cnc);
        return Root_view;


    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("MANUAL MODE : CONNECTION");
        menu.add(1, v.getId(), 0, "TEST  ");
        menu.add(1, v.getId(), 0, "SELECT ALL  ");
        menu.add(1, v.getId(), 0, "DESELECT ALL  ");
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        if(item.getTitle()=="TEST  ")
        {

            if(manual_child.search_edit_text.equals(""))
            {
                Toast.makeText(getActivity(),"Empty Message",Toast.LENGTH_LONG).show();
            }

}
}

这是我的日志:

01-02 07:27:25.830: E/AndroidRuntime(28243): FATAL EXCEPTION: main
01-02 07:27:25.830: E/AndroidRuntime(28243): java.lang.NullPointerException
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.developer.milanandroid.Manual_AC_Fuse_ckt.onContextItemSelected(Manual_AC_Fuse_ckt.java:120)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.support.v4.app.Fragment.performContextItemSelected(Fragment.java:1909)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.support.v4.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:2058)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:359)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3644)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.widget.AdapterView.performItemClick(AdapterView.java:298)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.widget.AbsListView$1.run(AbsListView.java:3473)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.os.Handler.handleCallback(Handler.java:730)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.os.Looper.loop(Looper.java:137)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at android.app.ActivityThread.main(ActivityThread.java:5103)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at java.lang.reflect.Method.invokeNative(Native Method)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at java.lang.reflect.Method.invoke(Method.java:525)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-02 07:27:25.830: E/AndroidRuntime(28243):    at dalvik.system.NativeStart.main(Native Method)

共有3个答案

尉迟宣
2023-03-14

您可以在片段中调用主要活动变量,如下所示:

EditText edt = (EditText)getActivity().findViewById(R.id.edtSearch);
钱瑞
2023-03-14

这里有两点。1.可以使用FloatingEditText editText=(FloatingEditText)((MainActivity.this)getActivity()。findViewById(R.id.edt\u导弹编号);2.使用if(item.getTitle()。等于(“测试”)条件。

邹俊友
2023-03-14

为此,您应该使用接口。您可以在活动实现的片段中创建一个接口。这是与活动视图通信的更好方式。

请参阅这篇文章以获取有关如何做到这一点的参考:Android:on-fragment interaction Listener出错

 类似资料:
  • fragment类主活动/主活动如何限制我的主活动在从片段的最后一页返回到主活动时不返回到片段的最后一页,就像我有一个主活动,单击按钮该主活动会导致另外3个活动,其中一个活动有片段。片段的最后一页指向home activity,但当我在home activity上后退时,它再次将我引导到片段的最后一页,然后我再次按下back按钮,然后我的应用程序关闭

  • 我在片段类中有方法。我想从主活动中调用该方法,但不想使用FragmentById(或)FragmentByTag。 我的碎片方法: 如何在不使用FragmentById(或)FragmentByTag的情况下从主活动调用上述方法?

  • 如何限制我的主要活动不返回片段的最后一页,一旦从片段的最后一页返回到主要活动,就像我有一个主活动一样,单击按钮,该主活动会导致另外3个活动,其中一个活动有片段。片段的最后一页指向home activity,但当我在home activity上后退时,它再次将我引导到片段的最后一页,然后我再次按下back按钮,然后我的应用程序关闭 我的主要活动课 公共类主页扩展应用程序活动{ } 我零星的寻呼机 公

  • //使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃

  • 我已经想从我的Main活动启动我的RecipientFra法规,并从我的Main活动将数据传递到Fra法规。这是我实现的代码。但是碎片没有开始。 我还想知道如何传递intent.set数据,并在碎片中获取数据。目前我有以下代码: 受体片段 主要活动