将字体添加到目的发送到另一个活动的意图



我有2个活动(实际上有4个活动,但目前只有2个问题),主要活动和字体变化的活动。主要活动将使用intentstartActivityForResult输入用户输入的字体更改活动的文本。在字体更改活动中,用户可以按预期更改文本字体。我要做的是在用户更改字体,将文本和新字体发送回主要活动之后。但是我不确定该怎么做。我正在考虑使用某种bundle,但我被卡住了。如果有人能帮助我,这将不胜感激。

这是我的(相关)主要活动代码:

public class MainActivity extends AppCompatActivity
{
    RelativeLayout move_group;
    ImageView view;
    String backgroundImageName;
    SeekBar seekSize;
    TextView user_text;
    Button button;
    SeekBar tiltChange;
    String temp;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user_text = (TextView) findViewById(R.id.user_text);
    static final int REQUEST_FONT = 4;
    public void FontChange(View view)
    {
        Intent fontIntent = new Intent(this, Main4Activity.class);
        fontIntent.putExtra("Text", temp);
        startActivityForResult(fontIntent, REQUEST_FONT);
    }
    //There's supposed to be an accompanying onActivityResult method as well
    //but i haven't figured that part out yet
}

这是我的(相关)字体活动代码:

public class Main4Activity extends AppCompatActivity
{
    TextView user_font_text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        user_font_text = (TextView) findViewById(R.id.user_font_text);
    }
    public void boldText(View view)
    {
        Typeface custom_font = getResources().getFont(R.font.avenir_next_bold);
        user_font_text.setTypeface(custom_font);
    }
    public void italicText(View view)
    {
        Typeface custom_font = getResources().getFont(R.font.avenir_next_italic);
        user_font_text.setTypeface(custom_font);
    }
    public void regularText(View view)
    {
        Typeface custom_font = getResources().getFont(R.font.avenir_next_regular);
        user_font_text.setTypeface(custom_font);
    }
    public void thinText(View view)
    {
        Typeface custom_font = getResources().getFont(R.font.avenir_next_thin);
        user_font_text.setTypeface(custom_font);
    }
    public void OK(View view)
    {
        //The intent and/or bundle would go here but I don't know what to do
    }
}
public void FontChange(View view)
    {
        temp = user_text.getText().toString();
        Intent fontIntent = new Intent(this, Main4Activity.class);
        fontIntent.putExtra("Text", temp);
        startActivityForResult(fontIntent, REQUEST_FONT);
    }

这将从TextView到Fontactivity获取您的字符串。

现在在您的界面中

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        Intent intent = getIntent();
        String text = intent.getStringExtra("temp");
        user_font_text = (TextView) findViewById(R.id.user_font_text);
        user_font_text.setText(text);
    }
   public void OK(View view)
    {
          Intent returnIntent = new Intent();
                returnIntent.putExtra("result", 
                    user_font_text.getText().toString());
                returnIntent.putExtra("font", 
                    ypur_font_type);
                 setResult(Activity.RESULT_OK, returnIntent);
    }

可以使用SpannableStringBuilder完成设置字体样式的剩余部分。在这里,您可以检查SpannableStringBuilder。希望这会有所帮助。

最新更新