我以编程方式创建的textView没有出现

时间:2019-02-25 04:42:38

标签: android

我正在尝试创建一个联系人管理列表应用程序,在该应用程序中,当您单击“添加联系人”按钮时,它将带您进入另一个活动,然后在返回到另一个活动时,为该联系人创建一个textview。但是,当我从活动中返回时,我的textView没有出现在“添加联系人”按钮上方。这是我的主要活动代码。

package com.example.contactmanagement;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    String fname, lname, phoneNumber, email;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    protected void onResume(Bundle savedInstanceState){
        Bundle bundle = getIntent().getExtras();
        fname = bundle.getString("fname");
        lname = bundle.getString("lname");
        phoneNumber = bundle.getString("phoneNumber");
        email = bundle.getString("email");
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        LinearLayout layout = (LinearLayout) findViewById(R.id.contactList);


        TextView textView = new TextView(this);
        textView.setLayoutParams(params);
        textView.setText(fname + lname);
        layout.addView(textView);


    }

    public void onClick(View view) {
        startActivity(new Intent("com.example.contactmanagement.addContact"));
    }

}

3 个答案:

答案 0 :(得分:0)

您必须在第二个活动addContact中创建文本视图,并使用putextras和getextras hope将值从第一个活动传递到第二个活动,以便它对您有用

 public void onClick(View view) {        
    Intent intent = new Intent(this, addContact.class);
    startActivity(intent);
}

答案 1 :(得分:0)

这是显示文字的答案

MainActivity.class

public class MainActivity extends AppCompatActivity {

    public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.editText);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

这里是具有XML的显示活动,可以动态添加视图

代码:

public class DisplayMessageActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        LinearLayout linearParentView = (LinearLayout) findViewById(R.id.linearParent);
        TextView dynamicTextView = new TextView(this);
        dynamicTextView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        dynamicTextView.setText(message);

        linearParentView.addView(dynamicTextView);
    }
}

和XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearParent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>

答案 2 :(得分:0)

首先,“ onResume”方法的签名错误。它不包含bundle参数。 其次,您应该使用重写此方法,(onResume方法不用于在活动之间发送和接收结果)。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

}

从另一个活动获取结果。您可以在此处找到有关活动之间的发送方式和结果的更多信息。

Getting a Result from an Activity

由于您的onResume方法从未被调用,因此您目前未收到任何文本。